我是Python的新手,所以这可能是一个简单的范围界定问题。Python文件(模块)中的以下代码使我有些困惑:
if __name__ == '__main__':
x = 1
print x
在我使用过的其他语言中,此代码将引发异常,因为该x
变量是if
语句的局部变量,不应在该变量之外存在。但是此代码将执行并打印1。有人可以解释此行为吗?是否在模块中创建的所有变量都是全局的/可用于整个模块?
Python变量的作用域是分配给它们的最里面的函数,类或模块。控制块(如if
和while
块)不计在内,因此在内分配的变量的if
作用域仍限于函数,类或模块。
(由生成器表达式或list / set / dict理解定义的隐式函数与lambda表达式一样进行计数。您不能将赋值语句填充到其中任何一个中,但是lambda参数和for
子句目标是隐式赋值。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句