Python■你应该知道的Python3.6、3.7、3.8新特性


Python■你应该知道的Python3.6、3.7、3.8新特性
文章图片

前言
很多人在学习了基本的Python语言知识后 , 就转入应用阶段了 , 后期很少对语言本身的新变化、新内容进行跟踪学习和知识更新 , 甚至连已经发布了好几年的Python3.6的新特性都缺乏了解 。
本文列举了Python3.6、3.7、3.8三个版本的新特性 , 学习它们有助于提高对Python的了解 , 跟上最新的潮流 。
一、Python3.6新特性1、新的格式化字符串方式新的格式化字符串方式 , 即在普通字符串前添加 f 或 F 前缀 , 其效果类似于str.format() 。 比如
name = \"red\"print(f\"He said his name is {name.\")
# 'He said his name is red.'

相当于:
print(\"He said his name is {name.\".format(**locals()))

此外 , 此特性还支持嵌套字段 , 比如:
import decimal
width = 10precision = 4value = https://mparticle.uc.cn/api/decimal.Decimal(/"12.34567\")
print(f\"result: {value:{width.{precision\")
#'result:  12.35'

2、变量声明语法可以像下面一样声明一个变量并指定类型:
from typing import List Dict

primes: List[int
= [

captain: str  # 此时没有初始值
class Starship:
 stats: Dict[str int
= {

3、数字的下划线写法允许在数字中使用下划线 , 以提高多位数字的可读性 。
a = 1_000_000_000_000_000    # 1000000000000000b = 0x_FF_FF_FF_FF       # 4294967295

除此之外 , 字符串格式化也支持_选项 , 以打印出更易读的数字字符串:
'{:_'.format(1000000)     # '1_000_000''{:_x'.format(0xFFFFFFFF)   # 'ffff_ffff'

4、异步生成器在Python3.5中 , 引入了新的语法 async 和 await 来实现协同程序 。 但是有个限制 , 不能在同一个函数体内同时使用 yield 和 await 。 Python3.6中 , 这个限制被放开了 , 允许定义异步生成器:
async def ticker(delay to):\"\"\"Yield numbers from 0 to *to* every *delay* seconds.\"\"\"
 for i in range(to):    yield i    await asyncio.sleep(delay)

5、异步解析器允许在列表list、集合set 和字典dict 解析器中使用 async 或 await 语法 。
result = [i async for i in aiter() if i % 2

result = [await fun() for fun in funcs if await condition()


6、新增加模块标准库(The Standard Library)中增加了一个新的模块:secrets 。 该模块用来生成一些安全性更高的随机数 , 用于管理passwords account authentication security tokens 以及related secrets等数据 。
7、其他新特性