1.python的变量作用域
- 能够改变python变量作用域的是def 、class、lambda;
- if/elif/else、try/except/finally、for/while这些语句并不能涉及变量值作用域的修改,也就是说在这些语句中定义的变量,在代码块以外也能够访问
- 变量搜索路径为:local>enclosing>global>build-in
例如:
def addNumbers(x,y):
if x<10:
i=1
sum=i+y
return sum
可以发现i是定义在if语句中的,但是在if语句结束,addNumbers函数内依然可以访问i变量,这与java和C语言中的变量的作用域有所不同
2.java局部变量作用域
局部变量是值定义在方法和代码块中的变量,变量必须初始化赋值后才能引用,变量只在当前代码块有效,而在代码块之外无法被访问。
例如:
public void test(){
int x=0;
if(x==0){
int y=1;
}
System.out.println(x+y);
}
这里将会编译出错,因为y变量只作用在if语句以内,if语句结束,y变量在栈中消失,因此后面的打印方法是无法访问y变量的。