|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
第一段代码:
def Fun1():
x = 5
def Fun2():
x *= x
return x
return Fun2()
>>> Fun1()
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
Fun1()
File "<pyshell#33>", line 6, in Fun1
return Fun2()
File "<pyshell#33>", line 4, in Fun2
x *= x
UnboundLocalError: local variable 'x' referenced before assignment
第二段代码:
>>> def Fun1():
x = [5]
def Fun2():
x[0] *= x[0]
return x[0]
return Fun2()
>>> Fun1()
25
问题:
0. 在第一段代码中,return x 怎么理解
1. 第一段代码为什么报错
2.将第一段代码改为第二段代码为什么就好了
3. Fun1() 的括号为什么是空的,需要赋值吗
4. 在第二段代码中 x[0] *= x[0], 其中[0]代表什么意思
0. 在第一段代码中,return x 怎么理解
就是返回x
1. 第一段代码为什么报错
因为x没有定义,内部函数的x覆盖了外面的x,就好比你不能没有赋值就直接 a *= a
2.将第一段代码改为第二段代码为什么就好了
形成了闭包,可以这样使用了
3. Fun1() 的括号为什么是空的,需要赋值吗
必须是空,因为函数定义的时候就是空
4. 在第二段代码中 x[0] *= x[0], 其中[0]代表什么意思
取第一个元素,因为列表x只有一个元素5,所以就是5
结果就是将x[0]赋值为5 * 5
|
|