Python 3.9的到来意味着什么?本文详细给你讲述

本文主要介绍Python3.9的一些新特性 , 如:更快速的进程释放 , 性能的提升 , 简便的新字符串函数 , 字典并集运算符以及更兼容稳定的内部API , 详细如下:

  • 字典并集和可迭代更新
  • 字符串方法
  • 类型提示
  • 新的数学函数
  • 新的解析器
  • IPv6范围内的地址
  • 新模块:区域信息
  • 其他语言更改
1、字典并集和可迭代更新 Python 3.9 dict类 。 如果有两个字典a和b , 则现在可以使用这些运算符进行合并和更新 。
我们有合并运算符|:
Python 3.9的到来意味着什么?本文详细给你讲述文章插图
使用Iterables进行字典更新
| =运算符的另一个很棒的性能是能够使用可迭代对象(如列表或生成器)用新的键值对来更新字典:
a = {'a': 'one', 'b': 'two'}b = ((i, i**2) for i in range(3))a |= bprint(a) {'a': 'one', 'b': 'two', 0: 0, 1: 1, 2: 4}2、字符串方法removeprefix()和removesuffix()
str.removeprefix(substring:string)字符串方法:如果str以它开头的话 , 将会返回一个修改过前缀的新字符串 , 否则它将返回原始字符串 。
str.removesuffix(substring:string)字符串方法:如果str以其结尾 , 则返回带有修改过后缀的新字符串 , 否则它将返回原始字符串 。
Python 3.9的到来意味着什么?本文详细给你讲述文章插图
这两个函数执行的操作将使用string [len(prefix):]作为前缀 , string [:-len(suffix)]作为后缀 。
这些是非常简单的操作 , 因此实现的也是非常简单的功能 , 但是考虑到可能会经常执行这些操作 , 最好有一个内置的函数可以完成此操作 。
3、类型提示Python是动态类型的 , 动态地为变量指定数据类型 , 意味着我们无需在代码中指定数据类型 。
但有时可能会造成混淆!
对于数据类型的静态分配 , 通常使用类型提示 。 这是在Python 3.5中引入的 。 从3.5开始 , 我们可以指定类型 , 但这是比较麻烦的 。
这项更新真正改变了这一点 , 现在可以将内置集合类型(List和Dict)用作泛型类型 。
之前 , 必须通过输入来调用大写类型List和Dict 。
ef greet_all(names: list[str]) -> None:for name in names:print("Hello", name)现在 , 无需从typing.List来调用List
4、新的数学函数数学模块添加和改进了许多辅助功能 , 从对现有功能的改进开始 。
import math#Greatest common divisormath.gcd(80, 64, 152)#8以前计算最大公因数的gcd函数只能应用于2个数字 , 迫使程序员在处理更多数字时必须执行类似math.gcd(80 , math.gcd(64 , 152))的操作 。 从Python 3.9开始 , 我们可以将其应用于任意数字的值 。
math模块中第一个新添加的是math.lcm函数:
#Least common multiplemath.lcm(4, 8, 5)#40math.lcm计算其参数的最小公倍数 。 与GCD一样 , 它允许可变数量的参数 。
5、新的解析器这部分更多是视线之外的改变 , 但有可能成为Python未来发展中最重大的改变之一 。
Python 3.9使用了一个新的基于PEG的解析器 。 以前Python使用LL(1) , 在构建该语言的新功能时 , PEG比LL(1)更灵活 。 官方文档中表示 , 这种灵活性将在Python 3.10及更高版本中体现出来 。
ast模块使用新的解析器 , 并产生与旧解析器相同的AST 。
6、IPv6范围内的地址Python 3.9的另一个变化是可以指定IPv6地址的范围 。 IPv6范围用于指定相应IP地址在Internet的哪个部分有效 。
范围可以使用%符号在IP地址的末尾指定——例如:3FFE:0:0:1:200:F8FF:FE75:50DF%2——因此该IP地址在范围2中 , 即链接本地地址 。