在if语句中初始化变量的范围是什么?

在if语句中初始化变量的范围是什么?

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

if __name__ == '__main__':
    x = 1print x

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


慕运维8079593
浏览 632回答 3
3回答

RISEBY

是的,它们处于相同的“本地范围”,实际上这样的代码在Python中很常见:if condition:   x = 'something'else:   x = 'something else'use(x)请注意,x在条件之前未声明或初始化,例如,在C或Java中。换句话说,Python没有块级范围。但是要小心,例如if False:     x = 3print(x)这显然会引发NameError例外。

慕虎7371278

与诸如C之类的语言不同,Python变量在其出现的整个函数(或类或模块)的范围内,而不仅仅在最里面的“块”中。就好像你int x在函数(或类或模块)的顶部声明,除了在Python中你不必声明变量。请注意,x仅在运行时检查变量的存在- 也就是说,当您到达print x语句时。如果__name__不相等"__main__"那么你会得到一个例外:NameError: name 'x' is not defined。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python