Python3 基础语法
1. 编码
默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。
2. 标识符
- 第一个字符必须是字母表中字母或下划线 _ 。
- 标识符的其他的部分由字母、数字和下划线组成。
- 标识符对大小写敏感。
- 在Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的了。
3. 注释
- Python中单行注释以 # 开头,实例如下:
1 | # 第一个注释 |
执行以上代码,输出结果为:
1 | Hello, Python! |
- 多行注释可以用多个 # 号,还有 ‘’’ 和 “””:
1 | # 第一个注释 |
执行以上代码,输出结果为:
1 | Hello, Python! |
4. 行与缩进
python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:
1 | if True: |
以上程序由于缩进不一致,执行后会出现类似以下错误:
1 | File "test.py", line 6 |
5. 多行语句
Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 \ 来实现多行语句,例如:
1 | total = item_one + \ |
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 \,例如:
1 | total = ['item_one', 'item_two', 'item_three', |
6. 数字(NUMBER)类型
python中数字有四种类型:整数、布尔型、浮点数和复数。
- int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
- bool (布尔), 如 True。
- float (浮点数), 如 1.23、3E-2
- complex (复数), 如 1 + 2j、 1.1 + 2.2j
7. 字符串(String)
1.Python 中单引号 ‘ 和双引号 “ 使用完全相同。
2.使用三引号(‘’’ 或 “””)可以指定一个多行字符串。
实例:
1 | word = '字符串' |
输出结果为:
1 | 字符串 |
3. 转义符 \。
4. 反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义。 如 r”this is a line with \n” 则 \n 会显示,并不是换行。
5.按字面意义级联字符串,如 “this “ “is “ “string” 会被自动转换为 this is string。
6.字符串可以用 + 运算符连接在一起,用 * 运算符重复。
7.Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
8.Python 中的字符串不能改变。
9.Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
10.字符串的截取的语法格式如下:变量[头下标:尾下标:步长]
实例:
1 | str = '123456789' |
输出结果如下:
1 | 123456789 |
8. 输入和输出
1.输出
在python中使用print()函数进行输出。
输出字符串时可用单引号或双引号括起来。
输出变量时,可不加引号。
变量与字符串同时输出或多个变量同时输出时,需用“,”隔开各项。
2.输入
Python提供了input()函数用于获取用户键盘输入的字符。
input()函数让程序暂停运行,等待用户输入数据,当获取用户输入后,Python将以字符串的形式存储在一个变量中,方便后面使用。
例如:
1 | a = input("请输入第一个整数:") #输入变量a的值 |
输出结果为:
1 | 请输入第一个整数:2 |
如果去掉上述第3,4行代码,也就是不用int()函数转换变量类型,那么变量c就是变量a和b的简单拼接。
例如:
1 | a = input("请输入第一个整数:") #输入变量a的值 |
输出结果为:
1 | 请输入第一个整数:2 |
9. 判断语句
构造1:
1 | if 判断条件: |
构造2:
1 | if 判断条件1: |
构造3:
1 | if 判断条件1: |
10. 循环语句
(1).while语句
构造:
1 | while 判断条件: |
(2).while-else语句
构造
1 | while 判断条件: |
如果 while 后面的条件语句为 false 时,则执行 else 的语句块。
例如:
1 | count = 0 |
执行结果为:
1 | 0 小于 5 |
(3).for语句
构造:
1 | for 变量 in 序列: |
for循环语句经常与range()函数一起使用,range()函数是Python的内置函数,可创建一个整数列表。
range()函数的语法是:
range([start,]stop[,step])
start:计数从start开始,默认是从0开始。例如,range(5)等价于range(0,5)
stop:计数到stop结束,但不包括stop。例如,range(0,5)是[0,1,2,3,4]
step:步长,默认为1。例如,range(0,5)等价于range(0,5,1)
(4).for-else语句
构造:
1 | for 变量 in 序列: |
例如:
1 | for x in range(6): |
输出结果:
1 | 0 |
11. Python基本数据类型-list-tuple-dict-set
(1).列表list
(2).元组tuple
Python的元组与列表类似,不同之处在于元组的元素不能修改;
元组使用小括号(),列表使用方括号[];
元组创建很简单,只需要在括号中添加元素,并使用逗号(,)隔开即可。
(3).字典dict
(4).集合set
python3进阶语法
1. 推导式
Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
Python支持各种数据结构的推导式:
(1).列表(list)推导式
列表推导式格式为:
1 | [表达式 for 变量 in 列表] |
out_exp_res:列表生成元素表达式,可以是有返回值的函数。
for out_exp in input_list:迭代 input_list 将 out_exp 传入到 out_exp_res 表达式中。
if condition:条件语句,可以过滤列表中不符合条件的值。
实例1:
1 | names = ['Bob','Tom','alice','Jerry','Wendy','Smith'] |
输出结果为:
1 | ['ALICE', 'JERRY', 'WENDY', 'SMITH'] |
实例2:
1 | a = [i.__float__() for i in range(0,20) if i % 3 == 0] # 计算0到20间可以被3整除的数,然后以float类型返回到列表 |
输出结果为:
1 | [0.0, 3.0, 6.0, 9.0, 12.0, 15.0, 18.0] |
(2).字典(dict)推导式
字典推导基本格式:
1 | { key_expr: value_expr for value in collection } |
实例1:
1 | listdemo = ['Google','baidu', 'tencent'] |
输出结果为:
1 | {'Google': 6, 'baidu': 5, 'tencent': 7} |
实例2:
1 | dic = {x: x**2 for x in (2, 4, 6)} |
输出结果为:
1 | {2: 4, 4: 16, 6: 36} |
(3).集合(set)推导式
集合推导式基本格式:
1 | { expression for item in Sequence } |
实例1:
1 | setnew = {i**2 for i in (1,2,3)} # 计算数字 1,2,3 的平方数 |
输出结果为:
1 | {1, 4, 9} |
实例2:
1 | a = {x for x in 'abracadabra' if x not in 'abc'} # 判断不是 abc 的字母并输出 |
输出结果为:
1 | {1, 4, 9} |
(4).元组(tuple)推导式
元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。
元组推导式基本格式:
1 | (expression for item in Sequence ) |
元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象。
实例:
1 | a = (x for x in range(1,10)) |
输出结果为:
1 | <generator object <genexpr> at 0x00000299CE178350> |
2. 三元表达式
Python 中没有其它语言的三元表达式(三目运算符)相关说法,但是有类似的语法。
在 Python 中,三元表达式是一种语法结构,一般被 Python 开发者叫做条件表达式,它的结构如下所示:
1 | 表达式(1)为 True 执行语句 if 条件表达式(1) else 表达式(1)为 False 执行语句 |
实例1:
1 | age = 20 |
输出结果为:
1 | 成年 |
(1).返回多个条语句
实例2:
1 | age = 20 |
输出结果为:
1 | ('成年', '大于18') |
代码返回一个元组,内容为 (‘成年’, ‘大于18’) ,这里一定注意不要使用分号 ; 否则只返回第一个语句的结果。
实例3:
1 | age = 20 |
输出结果为:
1 | 成年 |
(2).三元表达式用于列表推导式
实例4:
1 | li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
输出结果为:
1 | [2, 4, 6, 8, 10] |
(3).在函数内部使用三元表达式
有些简单的判定逻辑,可以直接使用三元表达式简化,例如判断传入参数是否为偶数。
例如:
1 | def even_num(num): |
(4).三元表达式与 lambda匿名函数
有时候可以将三元表达式与 lambda 进行结合,让代码变得更加简洁。
实例5:
1 | max = lambda a, b: a if a > b else b # 与下面的代码意思相同 |
输出结果为:
1 | 15 |
(5).三元表达式的嵌套
实例6:
1 | # 编写一个三元表达式,首先判断其值大于20,然后在判断是奇数 |
输出结果为:
1 | 奇数 |
(6).三元表达式的扩展使用
元组条件表达式
实例7:
1 | age = 20 |
输出结果为:
1 | 成年 |
语法格式如下所示
1 | (当后面的表达式为假时返回,当后面的表达式为真时返回)[条件表达式] |
字典条件表达式
实例8:
1 | age = 20 |
输出结果为:
1 | 成年 |
上述两种写法都有一些故弄玄虚,而且代码非常不易阅读,所以不建议实战编码时使用。
3.Python 断言
(1).python断言定义
Python断言用于判断某个表达式的值,结果为 True,程序运行,否则,程序停止运行,抛出 AssertionError 错误。
实例1:
1 | def overage18(age): |
输出结果为:
1 | AssertionError: 对不起未满18岁,无法进行游戏 |
断言主要为调试辅助而生,为的是程序自检,并不是为了处理错误,程序 BUG 还是要依赖 try… except 解决。
(2).常用断言函数
assertEqual(a,b,msg=msg):判断两个值是否相等;
assertNotEqual(a,b,msg=msg):上一函数的反义;
self.assertTrue(a,msg=none):判断变量是否为 True;
assertFalse(a,msg=none):同上反义;
assertIsNone(obj=‘’):判断 obj 是否为空;
assertIsNotNone(obj=‘’):同上反义;
4.with-as
(1).Python with…as…是什么
在 Python 中,文件操作,数据库操作,都需要在程序执行完毕进行清理工作,很多时候我们经常忘记手动关闭,因此 Python 集成了一种自动操作,例如文件使用自后,自动释放资源。
上述场景的描述,转换成 Python 语法就是 with…as 语句,即上下文管理器,它在 Python 中实现了自动分配并释放资源。
(2).with-as 语句的语法格式
1 | with 表达式 [as 指定一个变量名]: |
其中 [ ] 中的内容可以省略,如果使用表示将前文表达式的结果保存到一个变量中。
(3).with-as如何使用
用于文件操作
with…as… 语句初次接触一般是在文件操作中,如果不使用上下文管理器,对一个文件进行操作的代码如下所示:
1 | file = open("./demo.txt") # 手动打开 |
下面是 with…as… 版本的代码:
1 | with open("./demo.txt") as file: |
如果不使用上述语句,想要完成一个完善的代码段,需要使用 try…except… 语句进行操作。
1 | file = open("./demo.txt") |