在if语句中初始化变量的范围是什么?我是Python的新手,所以这可能是一个简单的范围问题。Python文件(模块)中的以下代码让我感到困惑:if __name__ == '__main__':
x = 1print x在我工作过的其他语言中,这段代码会引发异常,因为x变量是if语句的本地变量,不应该存在于它之外。但是这段代码执行并打印1.任何人都可以解释这种行为吗?模块中创建的所有变量是全局/可用于整个模块吗?
3 回答
RISEBY
TA贡献1856条经验 获得超5个赞
是的,它们处于相同的“本地范围”,实际上这样的代码在Python中很常见:
if condition: x = 'something'else: x = 'something else'use(x)
请注意,x
在条件之前未声明或初始化,例如,在C或Java中。
换句话说,Python没有块级范围。但是要小心,例如
if False: x = 3print(x)
这显然会引发NameError
例外。
慕虎7371278
TA贡献1802条经验 获得超4个赞
与诸如C之类的语言不同,Python变量在其出现的整个函数(或类或模块)的范围内,而不仅仅在最里面的“块”中。就好像你int x
在函数(或类或模块)的顶部声明,除了在Python中你不必声明变量。
请注意,x
仅在运行时检查变量的存在- 也就是说,当您到达print x
语句时。如果__name__
不相等"__main__"
那么你会得到一个例外:NameError: name 'x' is not defined
。
添加回答
举报
0/150
提交
取消