最有趣的创新:
- 赋值表达式:
新的 := 运算符允许您为表达式内的变量赋值。 例如:
如果 (n := len(a)) > 10:
print(f"列表太长({n} 个元素,预计 <= 10)") - 仅位置参数:
您现在可以指定哪些函数参数可以通过命名参数语法传递,哪些不能。 例子:
def f(a, b, /, c, d, *, e, f):
打印(a、b、c、d、e、f)f(10, 20, 30, d=40, e=50, f=60) # 好
f(10, b=20, c=30, d=40, e=50, f=60) # 错误,`b` 不能是命名参数
f(10, 20, 30, 40, 50, f=60) # 错误,`e` 必须是命名参数此更改为开发人员提供了一种保护 API 用户免受函数参数名称更改影响的方法。
- 支持 f-strings = 用于自记录表达式和调试:
添加糖来简化调试/记录消息。
N = 42时
print(f'你好世界{n=}。')
# 将打印“Hello world n=42”。 - 修复了finally块中的continue关键字(之前不起作用)。
其他:
- 您可以显式指定字节码缓存的路径,而不是默认的 __pycache__。
- 调试和发布版本使用相同的 ABI。
来源: linux.org.ru