这可能是一个简单的范围界定问题。 Python 文件(模块)中的以下代码让我有点困惑:
if __name__ == '__main__':
x = 1
print x
在我使用过的其他语言中,这段代码会抛出异常,因为x
变量是局部的if
语句并且不应该存在于它之外。但是这段代码执行并打印 1。任何人都可以解释这种行为吗?模块中创建的所有变量都是全局的/对整个模块可用吗?
Python 变量的作用域是分配它们的最里面的函数、类或模块。控制块如if
and while
块不算数,因此在块内分配的变量if
其作用域仍然是函数、类或模块。
(由生成器表达式或列表/集合/字典理解定义的隐式函数do计数,就像 lambda 表达式一样。您不能将赋值语句填充到其中任何一个中,但 lambda 参数和for
子句目标是隐式赋值。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)