2020年已经到来,这意味着Python 2将不再受支持 。 确切地说,主要开发人员已经停止在该分支上工作,而专门针对PyCon US的2.7.18版本2020年4月的发布将标志着与Python 2相关的所有活动的完全停止。
另一方面,最近发布了Python 3.8,为该语言添加了一点语法。 但是, 尚未很快期望使用Python 3.9,但它似乎并未为该语言添加任何有趣的东西。
因此,如果您没有突然放弃Python 2,那么根本就没有意义可言:对第二个版本的支持已经停止,立即过渡到3.8将使您可以长期使用该语言的最新状态。
好了,为了使决策更容易,以下是Python 3.8的主要创新的概述,这对每个python程序员都是有用的。
1.赋值表达式
也称为海象运算符,这是一种新语法,可让您将值分配给另一个表达式内的变量。 这可能是3.8版创新中最著名和讨论最多的内容。
a = 6
引入运算符的目的是为了提高代码的可读性,因此(像所有其他运算符一样)并不需要立即使用它,而只有在适当时才使用它。
2.仅位置参数
函数可以采用两种类型的参数。
在下面的代码中,参数a和b的值都可以通过位置和名称来传递。
def my_func(a, b=1): return a+b my_func(5,2)
在新版本的Python中,您可以显式地限制哪些参数只能在位置或仅使用函数签名中的符号/和*命名(但是后者在Python 3.8之前出现)。
在下面的示例中,前两个参数a和b只是位置, c和d可以是任意值,而后两个e和f必须被命名。
def my_func(a, b, /, c, d, *, e, f): return a+b+c+d+e+f my_func(1, 2, 3, 4, 5, 6)
为什么要限制参数类型的灵活性? 在某些情况下,使用参数名称代替其位置将是无用且不合适的。 如果您打算将来更改位置自变量的名称,该限制还将避免出现问题。
3. f线2.0
用语言很难描述在Python 3.6中出现的f线格式有多么容易和优雅。
很难相信,但是Python 3.8设法使它们更加方便。 通过在要替换的变量的名称之后添加=符号,可以显示其名称和值,而无需重复该名称。
pi = 3
使用打印进行调试将更加方便:)
4.字典条目的相反顺序
现在可以使用反向()反向进行字典迭代。
5.从其他模块获取元数据
新的importlib.metadata模块将允许您从第三方程序包中获取元数据(例如,版本)。
6.最后+继续
以前,由于实现此功能的困难,您最终不能在内部使用continue语句。 现在可以了。
for i in range(2): try: print(i) finally: print('.') continue print(' .')