在Python中,if语句内部的变量作用域是否可以在if语句外部可见?(我来自Java背景,所以觉得这有点奇怪)
在以下情况下,name首先在if块内定义,但该变量也可以在if块外部可见。我本来期望会出现错误,但是'joe'被打印出来了。
if 1==1:
name = 'joe'
print(name)
在Python中,if语句内部的变量作用域是否可以在if语句外部可见?(我来自Java背景,所以觉得这有点奇怪)
在以下情况下,name首先在if块内定义,但该变量也可以在if块外部可见。我本来期望会出现错误,但是'joe'被打印出来了。
if 1==1:
name = 'joe'
print(name)
所有在函数中使用的Python变量都存在于函数级别作用域中。 (忽略全局和闭包变量)
这在像这样的情况下非常有用:
if foo.contains('bar'):
value = 2 + foo.count('b')
else:
value = 0
Class.thing
或者self.thing
,而不是仅仅使用thing
)。但是它们有自己的命名空间。 - detly
nonlocal
关键字,它并不定义作用域,只是为引用封闭但非全局作用域添加了一种语法。 - agf