为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕运维8079593 2019-08-26 11:08:15
在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例外。


查看完整回答
反对 回复 2019-08-26
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

与诸如C之类的语言不同,Python变量在其出现的整个函数(或类或模块)的范围内,而不仅仅在最里面的“块”中。就好像你int x在函数(或类或模块)的顶部声明,除了在Python中你不必声明变量。

请注意,x仅在运行时检查变量的存在- 也就是说,当您到达print x语句时。如果__name__不相等"__main__"那么你会得到一个例外:NameError: name 'x' is not defined


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 628 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信