在if语句中声明的Python变量的范围是多少?

问题:

我是Python的新手,所以这可能是一个简单的范围问题。 Python文件(模块)中的以下代码稍微令人困惑:

if __name__ == '__main__':
    x = 1

print x

在其他语言中,这个代码会抛出一个异常,因为x变量是if语句的本地变量,不应该存在于它外面。但是这个代码执行和打印1.任何人都可以解释这个行为?所有变量在模块中创建全局/可用于整个模块吗?

回答:

Python变量的范围限定在分配给它们的最内层函数,类或模块中。诸如ifwhile块之类的控制块不进行计数,因此在if内分配的变量仍然限于功能,类或模块。
(由生成器表达式或列表/ set / dict comprehension do计算的隐式函数与lambda表达式一样,您不能将赋值语句填充到任何一个中,但lambda参数和for子句目标是隐式赋值。)

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What’s the scope of a Python variable declared in an if statement?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 76 = 80