- Python3.8近乎全方位的性能提高(变量和属性的读取写入性能,数据结构的读取写入性能,堆栈队列操作性能)
- 增加了海象运算符:=
1 fruits = ['apple', 'banana', 'orange', 'potato']
2
3 # 海象运算符 := 可以在判断过程中赋值新变量
4 # size = len(fruits)是赋值
5 # len(fruits) > 3是判断
6 if (size := (len(fruits))) > 3:
7 print('水果有点太多了,不要了!!!')
1 students = {
2 1: {'name': '小明', 'score': '及格'},
3 2: {'name': '小丽', 'score': '不及格'},
4 4: {'name': '小强', 'score': '及格'}
5 }
6
7 results = []
8
9 for stuId in range(1, 5):
10 student = students.get(stuId)
11 if student and student['score'] == '不及格':
12 results.append(student)
13
14 print(results)
15
16 # 海象运算符的使用:过滤到不存在的学号,并找到不合格的学生
17 print([student for stuId in range(1, 5)
18 if (student := students.get(stuId)) and student['score'] == '不及格'])
- 限定符/和 *,/限定/前面必须是按位置传参,*限定*后面必须是关键字参数
1 def test(a, b, /, c):
2 print(a, b, c)
3
4
5 # 位置形参限定符/前不可用关键字传参,只能按照固定位置参数传。
6 # 位置形参限定符/后即可用关键字传参,也可以按照规定位置传参。
7 test('我是a', '我是b', '我是c')
8 test('我是a', '我是b', c='我是c')
9
10
11 # test(a = '我是a', b='我是b', c='我是c') #报错
12
13 # 关键字形参限定符*
14 # *前面的参数不做限制,可以关键字传入,也可以直接传入也就是按位置传入
15 # *后面的参数只能以关键字的方式传入
16 def test(a, b, /, c, *, d, e):
17 print(a, b, c, d, e)
18
19
20 test('我是a', '我是b', '我是c', d='我是d', e='我是e')
21
22
23 def test(a, b, /, **kwargs):
24 print(a, b, kwargs)
25
26
27 test('我是a', '我是b', c='我是c',b = '我也是b')
1 data = ['嘻嘻', '哈哈']
2 count = len(data)
3
4 print(f'{data=},{count=}')
5
6 a = 1
7 b = 2
8 print(f'{a+b=}')
9
10 c = 1023
11 d = 1
12 print(f'{c+d=:,d}')