📜  Python 3.8 中令人敬畏的新功能(1)

📅  最后修改于: 2023-12-03 15:04:03.960000             🧑  作者: Mango

Python 3.8 中令人敬畏的新功能

Python 是一门非常受欢迎的编程语言,它的简洁和易用性让许多程序员非常喜欢它。Python 3.8 中加入了许多让人兴奋的新功能,本文将介绍其中一些。

带赋值表达式的海象运算符

海象运算符(walrus operator)是 Python 3.8 中引入的新语法。它的作用是可以在赋值之前,先进行一个表达式的计算。这使得我们可以在某些场合下写出更加简洁的代码,例如:

# 在一个循环中,同时计算另一个值,如果满足判断条件,则跳出循环
while (chunk := file.read(1024)) != b"":
    if b"stop" in chunk:
        break

以上代码中,chunk := file.read(1024) 语句会将 file.read(1024) 的结果同时赋值给 chunk,如果 chunk 不为空,则满足循环条件。这个特性在 Python 3.8 中非常受欢迎。

f-string 中的 = 语法

Python 3.8 中还添加了一个新语法:在 f-string 中使用 = 来给变量赋值。例如:

name = "Alice"
f"Her name is {name=}"

以上代码的输出结果是 Her name is name='Alice'。这个特性非常适合用于调试中,它可以帮助我们快速地输出变量的值。

Positional-only 参数

函数参数在 Python 中一般分为两种:位置参数和关键字参数。Python 3.8 中添加了一种新的参数类型:位置参数唯一(positional-only)参数。这种参数只能通过位置而不能通过关键字传递,例如:

def func(a, b, /, c, d):
    print(a, b, c, d)

func(1, 2, 3, 4)  # 输出 1 2 3 4
func(1, 2, c=3, d=4)  # 抛出 TypeError

在以上代码中,参数 ab 只能通过位置传递,而参数 cd 可以通过位置或者关键字传递。这个特性可以让函数定义者更好地控制函数的参数传递方式。

其他新特性

除了以上几个特性,Python 3.8 中还有一些其他的新特性,例如:

  • math.isqrt():一个新的数学函数,用于计算一个数的平方根。
  • 在 f-string 中,我们可以使用大括号 {} 表示花括号 {,例如 { {1} } + 2 = 3
  • 变量注释中可以使用 typing.final 来表示只读变量。

以上就是 Python 3.8 中一些令人敬畏的新特性。它们有助于提高我们的代码效率和可读性,让 Python 编程更加有趣和愉快!