if语句中的Python变量范围

Gli*_*ide 24 python

在Python中,if语句中的变量范围是否在if语句之外可见?(来自Java背景,所以发现这有点奇怪)

在下面的例子中,name首先在if-block中定义,但变量在if-block之外也是可见的.我原以为会发生错误但是'joe'会打印出来.

if 1==1:
    name = 'joe'
print(name)
Run Code Online (Sandbox Code Playgroud)

agf*_*agf 45

if 语句没有在Python中定义范围.

循环,with语句,try/ except等等.

只有模块,函数和类定义范围.

请参阅Python教程中的Python 范围和命名空间.