Python3.8 新特性
简介
Python3.8 发布于2019年10月14日,这儿总结一下改版本引入的一些新功能
官方新特性链接 Python3.8 新特性
安装
此处主要介绍在Ubuntu下安装 Python3.8
- 添加deadsnakes源
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
- 安装 Python3.8
sudo apt install python3.8-full
- 安装 Python3.8 的pip
python3.8 -m ensurepip --upgrade
海象运算符
新增的语法 := 可在表达式内部为变量赋值。 它被昵称为“海象运算符”因为它很像是海象的眼睛和长牙。
例如以下代码可以避免 len()
调用两次
1 | a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] |
利用海象表达式可以在一行内实现斐波那契数列
1 | [(f:=(f[1], sum(f)) if i else (0,1))[1] for i in range(10)] |
仅限位置形参
新增了一个函数形参语法 /
用来指明某些函数形参必须使用仅限位置而非关键字参数的形式
1 | def f(a, b, /, c, d, *, e, f): |
字典可使用 reversed 进行反转
普通字典自 Python 3.7 起已保证具有确定的元素顺序,在 Python 3.8 中可以利用 reversed 按插入顺序反向迭代。
1 | s={'a': 1,'b': 2,'c': 3} |
f-string 增加 = 说明符
增加 = 说明符用于 f-string。 形式为 f’{expr=}’ 的 f-字符串将扩展表示为表达式文本,加一个等于号,再加表达式的求值结果
1 | user = 'eric_idle' |
新版本还给 f-string 增加了转换符 !s 、!a 、!r
转换符 !s
是对结果调用 str(),!r
是调用 repr(),而 !a
是调用 ascii()。
1 | import datetime |
可从进程直接访问的共享内存
添加了新的 multiprocessing.shared_memory
模块,可以直接共享内存
1 | from multiprocessing import shared_memory |
1 | from multiprocessing import shared_memory |
typing 特性
新增 TypeDict
,一个带有键专属类型的字典类型,TypedDict 只使用字符串作为键。 默认情况下每个键都要求提供。 指定 “total=False” 以允许键作为可选项
asyncio.run
asyncio.run()
已经从暂定状态晋级为稳定 API。 此函数可被用于执行一个 coroutine 并返回结果,同时自动管理事件循环。
1 | import asyncio |
其他特性
- 之前版本中 continue 语句不允许在 finally 子句中使用,这是因为具体实现存在一个问题。 在 Python3.8 中此限制已被取消
- 很多内置方法的性能都提高了 20% - 50%
- typing.TypeDict