001 Python3.8新特性
- 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}')