gpt4 book ai didi

python - 赋值表达式 `:=` 如何在 Python 中工作?

转载 作者:太空狗 更新时间:2023-10-29 17:50:06 30 4
gpt4 key购买 nike

我读过 PEP 572关于赋值表达式,我发现这段代码是一个清晰的示例,我可以在其中使用它:

while line := fp.readline():
do_stuff(line)

但我很困惑,从我读到的内容来看,它应该像正常赋值一样工作但返回值。但它似乎并不像那样工作:

>>> w:=1
File "<stdin>", line 1
w:=1
^
SyntaxError: invalid syntax

现在在修改它之后,我实现了以下工作:

>>> (w:=1)
1

但它感觉很不符合Python。它是唯一需要括号的运算符:

>>> w = 1
>>> w + w
2
>>> w == w
True
>>> w is w
True
>>> w < w
False

解析器对它的处理方式与 Python 中的其他任何东西都不一样……有什么原因吗?我觉得我错过了什么。这不仅仅是一个运算符。

在 REPL 中使用 := 来分配变量会非常有用,因为值会显示出来。


(更新:我不鼓励对这个敏感话题进行自以为是的讨论。请避免发表有用的评论或答案。)

最佳答案

作为GreenCloakGuy提到,它是为了避免混淆,如前所述 here ,我认为这一行总结了一切:

there is no syntactic position where both = and := are valid.

它也会让这些东西变得无效,因为太困惑了:

y0 = y1 := f(x)
foo(x = y := f(x))

关于python - 赋值表达式 `:=` 如何在 Python 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54544744/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com