Ben*_*tte 13 python python-3.8
我已经阅读了关于赋值表达式的PEP 572,我发现这个代码是一个明确的例子,我可以使用它:
while line := fp.readline():
do_stuff(line)
Run Code Online (Sandbox Code Playgroud)
但我很困惑,从我读到的,它应该像正常的赋值一样工作,但返回值.但它看起来不像那样:
>>> w:=1
File "<stdin>", line 1
w:=1
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
在修补它之后,我意识到以下工作:
>>> (w:=1)
1
Run Code Online (Sandbox Code Playgroud)
但它感觉如此不熟悉.它是唯一需要括号的运算符:
>>> w = 1
>>> w + w
2
>>> w == w
True
>>> w is w
True
>>> w < w
False
Run Code Online (Sandbox Code Playgroud)
它是否有理由被解析器与Python中的其他任何东西区别对待?我觉得我错过了什么.这不仅仅是一个运营商.
:=在REPL中使用以指定变量将非常有用,因为将显示该值.
(更新:我不鼓励对这个敏感话题进行固执讨论.请避免发表评论或答案,而不是有用的评论.)
作为GreenCloakGuy提到的,它的存在为避免混淆,如说在这里,我觉得这条线的款项说明了一切:
=和:=都没有有效的句法位置。
这也使诸如此类的事情变得无效,因为太令人困惑了:
y0 = y1 := f(x)
foo(x = y := f(x))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
712 次 |
| 最近记录: |