我目前正在用 Python 开发一些东西,我对变量范围有疑问。
这是代码:
a = None
anything = False
if anything:
a = 1
else:
a = 2
print a # prints 2
如果我删除第一行 (a = None),代码仍然像以前一样工作。然而,在这种情况下,我将在“if” block 内声明变量,而对于其他语言(如 Java),该变量仅在“if” block 内可见。
变量作用域在 Python 中是如何工作的,在这种情况下编程的好方法是什么?
谢谢!
最佳答案
根据经验,作用域是在三个地方创建的:
- 文件范围——也称为模块范围
- 类范围 - 在
class
block 内创建 - 函数范围 - 在
def
block 内创建
(有一些异常(exception)。)
分配给一个名称将其保留在作用域命名空间中,标记为未绑定(bind),直到到达第一个分配。因此,对于心智模型,您是在为范围内的名称赋值。
关于python - 关于变量范围的正确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2359726/