|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码A:
>>>def outside():
var = 5
def inside():
var = 3
print(var)
inside()
>>>outside()
3
代码B:
>>>def outside():
var = 5
def inside():
print(var)
var = 3
inside()
>>>outside()
Traceback (most recent call last):
File "<input>", line 11, in <module>
File "<input>", line 8, in outside
File "<input>", line 5, in inside
UnboundLocalError: local variable 'var' referenced before assignment
代码C:
>>>def outside():
var = 5
def inside():
print(var)
inside()
>>>outside()
5
问题:这是小甲鱼的课后题,代码B会出错小甲鱼给的理由是:“这里 outside() 函数里有一个 var 变量,但要注意的是,内嵌函数 inside() 也有一个同名的变量,Python 为了保护变量的作用域,故将 outside() 的 var 变量屏蔽起来,因此此时是无法访问到外层的 var 变量的。”
但是代码C为什么又不会出错呢?我自己的想法是内部函数是可以访问外部函数的局部变量的,但是如果不加‘弄nonlocal’关键字的话是不能够修改的,这里的代码B出错是因为访问了var之后Python将var视为外部函数的局部变量因此无法修改,当再执行var = 3的时候就会报错。
不知道这样理解对不对,有没有哪位鱼油能给一点专业+通俗的解释?? |
评分
-
查看全部评分
|