Java与Python的局部变量范围

Local variable scope in Java vs Python

本问题已经有最佳答案,请猛点这里访问。

当我尝试访问在第一个Java代码块中声明的块之外的局部变量jimS发现时,我会得到编译错误。

错误:(10, 13)Java:找不到符号,符号:变量jimfound,位置:类范围

这是我所期望的。

1
2
3
4
5
6
7
8
9
10
11
public class Scope {
    public void main(String args[]){
        String name ="Jim";
        if (name.equals("Jim")) {
            boolean jimFound = true;
        }
        if(jimFound) {
            System.out.println("I found Jim!");
        }
    }
}

当我对python进行同样的尝试时,我的程序设法找到了Jim。

1
2
3
4
5
name ="Jim"
if name =="Jim":
    jim_found = True
if jim_found:
    print"I found Jim!"

控制台结果是"我找到吉姆了!"

为什么会这样?


python变量的作用域是最里面的函数或模块;像ifwhile这样的控制块不计算在内。

if语句中声明的python变量的作用域是什么?