if __name__ == __main__的范围

Cem*_*mre 7 python scope

范围是if __name__ == __main__什么?这个陈述在全球范围内是否涵盖了所有内容?

use*_*342 11

关于if __name__ == '__main__'阻止没什么特别的.也就是说,它的范围取决于它发生的位置.由于此类块通常发生在顶层,因此它们的范围是全局的.

如果这个块在一个完全合法的函数中发生,那么它的作用域将是本地的 - 除了它__name__仍将解析为模块中定义的全局值.


Ste*_*ski 5

>>> if __name__ == '__main__':
...     x = 1
... print 'x' in globals()
True
Run Code Online (Sandbox Code Playgroud)

编辑:user4815162342表明这个if语句可以在任何范围内编写.它通常是在全球范围内编写的.

这里是一个函数:

>>> def foo():
...     if __name__ == '__main__':
...         bar = 1
... foo()
... print 'bar' in globals()
False
Run Code Online (Sandbox Code Playgroud)