|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
写了两个程序,但有一个没报错,另一个确报错了,不知道问题出在哪,两个程序就差个赋值语句而已,(自己的猜测是:如果没有这个赋值语句来去改变外部变量的值,var默认就是外部变量的值,内部程序里是可以调用这个值的,虽然一般不支持这样做,如果有了赋值语句来改变值,内部程序里所有的var调用前都需要赋值语句来定义var,否则不能调用)求大神解释下!!
第一个程序如下:
>>> def outside():
var=5
def inside():
print(var)
inside()
>>> outside()
5
第二个程序及报错如下:
>>> def outside():
var=5
def inside():
print(var)
var=3
inside()
>>> outside()
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
outside()
File "<pyshell#7>", line 6, in outside
inside()
File "<pyshell#7>", line 4, in inside
print(var)
UnboundLocalError: local variable 'var' referenced before assignment
作用域这一块的话,或许可以用PHP的语法解释一下,作用域内的变量可以这样着看:inside里的变量在inside中进行查找,如果查找不到,就会往外查找,一直到windows下。而你第二个函数,先是打印var,后又赋值var,那么打印var的时候就查找var变量,但是下面的var又赋值了,就导致了语法冲突,未定义就先打印变量,导致出错
|
|