最近我在代码中遇到了一个错误,这使我足够想知道。主要问题是下面的代码有效:
def test():
print(memory)
if __name__ == "__main__":
memory = 1
test()
清楚是否在文件顶部定义了memory
,但这似乎是为我打破所有范围规则。但是必须有一些原因。
即使内存变量的工作似乎很奇怪,也可以预期。变量范围不被违反!
如果__name __ ==" __ main __": - 当源文件直接调用供执行而不是导入到另一个文件中时,此语句用于定义或声明全局功能,并从第三个模块调用。
因此,当您直接执行源文件时,它将首先定义变量 - MOMEME 将是全局,并且可以在函数 test> test 中访问为全局变量(没有发生过多的发生)。
请参阅以下链接以获取更多理解 - 如果__ -name __ ==; __ Main __ __:do do?do?