可能重复:
Python 变量范围问题
Python 嵌套函数范围
我对以下代码感到困惑
def func():
a=10
def func2():
print a
a=20
func2()
print a
func()
在python 2.7中,运行上述代码时,python会报错UnboundLocalError
,,抱怨在func2
,当print a
,'a'在赋值前被引用
但是,如果我发表评论a=20
,func2
一切顺利。Python 将打印两行 10;即,以下代码是正确的。
def func():
a=10
def func2():
print a
func2()
print a
func()
为什么?因为在其他语言中,比如 c/c++
{
a=10
{
cout<<a<<endl //will give 10
a=20 //here is another a
cout<<a<<endl //here will give 20
}
}
局部变量和外部变量可以很清楚地区分。