#巨蟒新闻:圭多接受了PEP 572。python现在有赋值表达式。
if (match := (pattern.search) pattern.search(data)) is not None:
print((match.group) mo.group(1))
filtered_data = [y for x in data if (y := f(x)) is not None]
这是一个建议,用于创建一种方法来使用符号分配表达式中的变量。
NAME := expr
match1 = pattern1.match(data)
match2 = pattern2.match(data)
if match1:
return match1.group(1)
elif match2:
return match2.group(2)
或者更有效:
match1 = pattern1.match(data)
if match1:
return match1.group(1)
else:
match2 = pattern2.match(data)
if match2:
return match2.group(2)
if match1 := pattern1.match(data):
return match1.group(1)
elif match2 := pattern2.match(data):
return match2.group(2)
if any(len(longline := line) >= 100 for line in lines):
print("Extremely long line:", longline)
但是,我不理解PEP中给出的示例是如何无效的:
y0 = y1 := f(x) # INVALID
y0 = (y1 := f(x))
是吗?如何使用?