def a():
x = 5
def b():
x = 4
print(x)
return b()
a()
4def a():
x = 5
def b():
x = x + 5
print(x)
return b()
a()
Traceback (most recent call last):
File "<pyshell#99>", line 1, in <module>
a()
File "<pyshell#98>", line 6, in a
return b()
File "<pyshell#98>", line 4, in b
x = x + 5
UnboundLocalError: local variable 'x' referenced before assignmentdef a():
x = 5
def b():
y = x + 5
print(y)
return b()
a()
10
已经懂了。程序在读代码的时候发现等号左边有一个与全局变量名一样的x,就把a函数里面x=5屏蔽了,然后等号右边x就找不到对应x变量的值。所以会报错 ‘在赋值前引用’
局部,声明一个glboal,在外部使用才会看到修改。例如 global x = 5
为什么只有 x = x + 5 会报错,而 x = 4 和 y = x + 5 不会报错
x = 4 不会报错理解,主要是y = x + 5 就不会报错
你这是python吗?麻烦截图吗?因为你这个代码看的晕,而python对空格比较敏感。
已经懂了,程序在读代码的时候发现等号左边有一个与全局变量名一样的x,就把x=5屏蔽了,然后等号右边x就找不到对应x变量的值。
– 未小贱 4年前