【问题标题】:Unexpected Python variable scope using Walrus Operator := assignment expression [duplicate]使用海象运算符的意外 Python 变量范围:= 赋值表达式 [重复]
【发布时间】:2021-08-13 06:22:18
【问题描述】:

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

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

将打印什么?

【问题讨论】:

  • Python 没有块作用域。这与赋值表达式本身无关

标签: python python-3.x scope


【解决方案1】:

输出:存在于 IF 之后

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

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

...

显然,这不仅仅是 Walrus := 赋值表达式。常规 FOR 语句也会发生这种情况:

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

输出:3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多