哪位大神帮忙看一下,小白不是很懂这里,x = 5是局部变量还是全局变量?

2020-06-01 11:36发布

问题:

def a():
x = 5
def b():
x = 4
print(x)
return b()

a()
4

def 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 assignment

def a():
x = 5
def b():
y = x + 5
print(y)
return b()

a()
10

回答1:

已经懂了。程序在读代码的时候发现等号左边有一个与全局变量名一样的x,就把a函数里面x=5屏蔽了,然后等号右边x就找不到对应x变量的值。所以会报错 ‘在赋值前引用’



回答2:

局部,声明一个glboal,在外部使用才会看到修改。例如 global x = 5



回答3:

你这是python吗?麻烦截图吗?因为你这个代码看的晕,而python对空格比较敏感。