Python一直在马不停蹄的更新,最近又要发布Python3.9的正式版了。该版本包含了一些新特性,下面一起来看看吧!!!
本文主要介绍以下方面:
新增字典合并操作符 | 和|=新增函数的参数、返回值的类型提示新增字符串移除前缀和后缀的函数新的python解析器
一、新增字典合并操作符 | 和|=
新增方法:使用 | 字符合并字典,如果合并时两个字典的键值相同采用第二个字典的键值对
例如:
dict1 = {k1:'a',k2:'b',k3:'c'}dict2 = {k4:'d',k5:'e'}dict3 = dict1 | dict2print(dict3)
输出结果
{k1:'a',k2:'b',k3:'c',k4:'d',k5:'e'}
也可以使用 |= 操作符进行合并
例如:
dict1 = {k1:'a',k2:'b',k3:'c'}dict2 = {k4:'d',k5:'e'}dict1 |= dict2print(dict1 )
输出结果
{k1:'a',k2:'b',k3:'c',k4:'d',k5:'e'}
|= 操作符的好处是支持使用可迭代对象(如列表或生成器)的键值对更新字典
例如:
dict1 = {k1:'a',k2:'b',k3:'c'}dict2 = ((i,i**2) for i in range(3))dict1 |= dict2print(dict1 )
输出结果
{k1:'a',k2:'b',k3:'c',k4:'d',k5:'e'}
如果把上述代码中的dict1 |= dict2换成dict3|= dict1 + dict2则汇报TypeError,因为 | 只允许字典类型进行合并
我们来看看以前python是如何实现字典合并的呢?答案是使用字典的update()方法
例如:
dict1 = {k1:'a',k2:'b',k3:'c'}dict2 = {k4:'d',k5:'e'}dict3 = dict1.update(dict2)print(dict3)
输出结果:
{k1:'a',k2:'b',k3:'c',k4:'d',k5:'e'}
不过为什么不使用 + 进行字典合并呢?
二、新增函数参数、返回值的类型提示
python的动态类型的编程语言,不需要指定数据类型,但可以对数据类型进行建议,语法如下:
def twoSum(num1: int, num2: int=100) -> int:sum = num1 + num2return sum
参数后面的冒号代表参数的类型建议,函数后面的箭头代表函数返回值的类型建议
虽然有类型建议,但是不传入建议的类型也不会报错,比如传入两个字符串,也可以对两个字符串进行相加。
有时候由于我们调用的时候可能不知道函数的建议参数类型和返回值类型,传错了就很尴尬,于是python3.9中增加了在调用的函数的地方给出类型提出,如下图所示:
任何地方都可以使用类型提示,由于有了新的语法支持,看起来非常清爽。
三、新增字符串函数
在python3.9中新增了两个函数,一个是移除字符串前缀,一个是移除字符串后缀,语法如下:
"Hello World".removeprefix("Hel")"Hello World".removesuffix("Hel")
四、新的python解析器
python目前主要使用一种基于LL(1)的语法,这种语法通过LL(1)解析器进行解析(从上到下从左到右地解析代码)。
新的python解析器是基于PEG语法的。
由于本仙女对解析器等底层东东了解不多,也就不介绍太多啦
顺便吐槽一句,python这么好用,阿里的测试为什么用java不用python呢,辛辛苦苦学java中