首页 > 解决方案 > 使用海象运算符的意外 Python 变量范围:= 赋值表达式

问题描述

我发现以下代码的变量范围非常出乎意料...(来自其他语言,其中scope_var变量的范围仅存在于 IF 的范围内):

if scope_var := 'exists after IF':
    pass
print(scope_var)

会打印什么?

标签: pythonpython-3.xscope

解决方案


输出:存在于 IF 之后

所以变量scope_var现在存在于 IF 语句之外/之后。

这对我来说很奇怪,所以我想我发布这个 Q/A 以供其他语言的其他人学习。(我在谷歌上搜索了很多文章,但没有找到像这个答案这样的答案,所以我希望这对像我这样的人有所帮助。)

...

显然它不仅仅是海象 := 赋值表达式。它也发生在常规 FOR 语句中:

for i in range(3):     
    pass 
print(i) 

输出:3


推荐阅读