最近我发现了我的代码中的一个错误,这个错误让我很满意。主要问题是下面的代码有效:
def test():
print(memory)
if __name__ == "__main__":
memory = 1
test()
如果在文件顶部定义了memory
,那将很清楚,但这似乎打破了我的所有范围规则。但是必须有一些原因。
答案 0 :(得分:0)
即使内存变量的工作看起来很奇怪,也是可以预期的。 Variable Scope未被违反!
if __name__ ==“__ main __”: - 此语句用于在直接调用源文件执行时定义或声明全局功能,而不是导入到另一个文件并从第三个模块调用
因此,当您直接执行源文件时,它首先将变量 - 内存定义为全局变量,并且可以在函数 test 中作为全局变量进行访问( 没有发生任何黯然失色)。
请参阅以下链接以了解更多信息 - What does if __name__ == "__main__": do?