Python3.9 新特性
简介
Python3.9 发布于2020年10月5日,这儿总结一下改版本引入的一些新功能
官方新特性链接 Python3.9 新特性
安装
此处主要介绍在Ubuntu下安装 Python3.9
- 添加deadsnakes源
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
- 安装 Python3.9
sudo apt install python3.9-full
- 安装 Python3.9 的pip
python3.9 -m ensurepip --upgrade
字典合并与更新运算符
合并 (|
) 与更新 (|=
) 运算符已被加入内置的 dict 类。 它们为现有的 dict.update
和 {**d1, **d2}
字典合并方法提供了补充。
1 | x = {"key1": "value1 from x", "key2": "value2 from x"} |
放宽对装饰器的语法限制
在之前版本的 Python 中对于装饰器的语法是有所限制的,Python 3.9 终于将这一限制放宽任意,任何表达式都可以用在装饰器中。
之前的装饰器语法
decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
Python3.9 的装饰器语法
decorator: '@' namedexpr_test NEWLINE
旧版装饰器
1 | def upper(func): |
新版装饰器
1 |
|
新增用于移除前缀和后缀的字符串方法
增加了 str.removeprefix(prefix)
和 str.removesuffix(suffix)
用于方便地从字符串移除不需要的前缀或后缀。另外 bytes
和 bytearray
以及 collections.UserString
也增加了对应的方法
1 | str_hello = 'hello, world!' |
标准多项集中的类型标注泛型
dict
、 list
、 set
、 tuple
用于取代 typing 中的 Dict
、 List
、 Set
、 Tuple
之前的版本
1 | from typing import List |
Python3.9 版本
1 | def greet_all(names: list[str]) -> None: |
file 属性将是一个绝对路径
1 | # /home/stolen/test.py |
datetime 模块的改进
isocalendar() 方法现在返回 namedtuple (具名元组) ,这样可以通过属性也能访问到该值
1 | import datetime |
math 模块的改进
math.gcd(*integers)
求最大公约数的函数允许传入超过2个参数
1 | import math |
math.lcm(*integer)
新增计算最小公倍数函数
1 | import math |