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