if any((comment := line).startswith('#') for line in lines):
print(f"First comment: {comment}")
else:
print("There are no comments")
如果将 :=替换为 =,这将是无效的。请注意命名表达式周围的附加括号。另一个例子:
# Compute partial sums in a list comprehension
total = 0
values = [1, 2, 3, 4, 5]
partial_sums = [total := total + v for v in values]
# [1, 3, 6, 10, 15]
print(f"Total: {total}") # Total: 15
注意,对于理解,变量 total是 不是本地人(第一个例子中的 comment也是 不是本地人)。命名表达式中的 NAME不能是表达式中的局部变量,因此,例如,[i := 0 for i, j in stuff]将是无效的,因为 i是是列表内涵的局部变量。
我已经从 PEP 572文档中选取了例子-这是一个很好的阅读!一旦我的公司从 Python 3.6升级,我期待着使用命名表达式。希望这对你有帮助!