文章目录[隐藏]
今天python教程栏目介绍Python 3.9。
Python 3.9,来了!
过去一年,来自世界各地的开发者们一直在致力于Python3.8的改进。Python 3.9 beta版本已经存在了一段时间,第一个正式版本于2020年10月5日发布。
每个Python版本都包含新开发和改进的功能,Python 3.9也不例外。
【python学习交流群】
下面介绍Python 3.9几个主要的新功能。
1. 字典(合并&更新)运算符
字典是Python中最基础的数据结构之一,并且随着python版本的迭代,性能得到不断地优化。
Python3.9中,合并(|
)和更新(|=
)运算符已添加到dict
类中。这些更新完善了现有的dict.update
和{** d1,** d2}
方法。
传统合并字典的方法:
>>> pycon = {2016: "Portland", 2018: "Cleveland"} # 字典1>>> europython = {2017: "Rimini", 2018: "Edinburgh", 2019: "Basel"} # 字典2# 方法一>>> {**pycon, **europython}{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}#方法二>>> merged = pycon.copy>>> for key, value in europython.items:... merged[key] = value...>>> merged{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}复制代码
这两种方法都合并了字典而不更改原始数据。请注意,字典1中“Cleveland”已被合并的字典2中“Edinburgh”覆盖。
你也可以更新字典1:
>>> pycon.update(europython)>>> pycon{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}复制代码
新版本的Python引入了两个新的字典运算符:合并(|
)和更新(|=
)。你可以使用|
合并两个字典,而|=
用于更新字典:
>>> pycon = {2016: "Portland", 2018: "Cleveland"}>>> europython = {2017: "Rimini", 2018: "Edinburgh", 2019: "Basel"}>>> pycon | europython # 合并{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}>>> pycon |= europython # 更新>>> pycon{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}复制代码
d1|d2
和{** d1,**本文来源[email protected]搞@^&代*@码)网5 d2}
的作用类似,都用于合并字典取并集,遇到相同key,后者会将前者覆盖。
使用|
的优势之一是它适用于类似字典的类型,并在合并后保持原来的类型:
>>> from collections import defaultdict>>> europe = defaultdict(lambda: "", {"Norway": "Oslo", "Spain": "Madrid"})>>> africa = defaultdict(lambda: "", {"Egypt": "Cairo", "Zimbabwe": "Harare"})>>> europe | africadefaultdict(<function <lambda> at 0x7f0cb42a6700>,{'Norway': 'Oslo', 'Spain': 'Madrid', 'Egypt': 'Cairo', 'Zimbabwe': 'Harare'})>>> {**europe, **africa}{'Norway': 'Oslo', 'Spain': 'Madrid', 'Egypt': 'Cairo', 'Zimbabwe': 'Harare'}复制代码