Python全局变量范围

时间:2017-09-05 03:41:29

标签: python scope global-variables

最近我发现了我的代码中的一个错误,这个错误让我很满意。主要问题是下面的代码有效:

def test():
    print(memory)


if __name__ == "__main__":
    memory = 1
    test()

如果在文件顶部定义了memory,那将很清楚,但这似乎打破了我的所有范围规则。但是必须有一些原因。

1 个答案:

答案 0 :(得分:0)

即使内存变量的工作看起来很奇怪,也是可以预期的。 Variable Scope未被违反!

if __name__ ==“__ main __”: - 此语句用于在直接调用源文件执行时定义或声明全局功能,而不是导入到另一个文件并从第三个模块调用

因此,当您直接执行源文件时,它首先将变量 - 内存定义为全局变量,并且可以在函数 test 中作为全局变量进行访问( 没有发生任何黯然失色)。

请参阅以下链接以了解更多信息 - What does if __name__ == "__main__": do?