Python variable scope in if-statements
本问题已经有最佳答案,请猛点这里访问。
在Python中,if语句中的变量范围是否在if语句之外可见? (来自Java背景,所以发现这有点奇怪)
在下面的例子中,name首先在if-block中定义,但变量在if-block之外也是可见的。 我原以为会发生错误但是'joe'会打印出来。
1 2 3 | if 1==1: name = 'joe' print(name) |
循环,
只有模块,函数和类定义范围。
请参阅Python教程中的Python范围和命名空间。
是的,在Python中,if语句中的变量作用域在if语句之外是可见的。
两个相关的问题进行了一次讨论:
范围规则的简短描述?
和
Python变量范围错误
函数中使用的所有python变量都存在于函数级别范围内。 (忽略全局和闭包变量)
这样的情况很有用:
1 2 3 4 | if foo.contains('bar'): value = 2 + foo.count('b') else: value = 0 |
这样我就不必在if语句之前声明变量了。