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}')

 

posted @ 2024-10-10 23:46  lzp123456  阅读(7)  评论(0编辑  收藏  举报