首页 新闻 会员 周边

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

0
悬赏园豆:20 [已解决问题] 解决于 2020-06-01 11:56

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

未小贱的主页 未小贱 | 初学一级 | 园豆:188
提问于:2020-05-30 19:30

已经懂了,程序在读代码的时候发现等号左边有一个与全局变量名一样的x,就把x=5屏蔽了,然后等号右边x就找不到对应x变量的值。

未小贱 3年前
< >
分享
最佳答案
0

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

未小贱 | 初学一级 |园豆:188 | 2020-06-01 11:55
其他回答(2)
0

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

收获园豆:10
shuai7boy | 园豆:225 (菜鸟二级) | 2020-05-30 21:16

为什么只有 x = x + 5 会报错,而 x = 4 和 y = x + 5 不会报错

支持(0) 反对(0) 未小贱 | 园豆:188 (初学一级) | 2020-05-31 09:46

x = 4 不会报错理解,主要是y = x + 5 就不会报错

支持(0) 反对(0) 未小贱 | 园豆:188 (初学一级) | 2020-05-31 10:52
0

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

收获园豆:10
南语喃 | 园豆:306 (菜鸟二级) | 2020-06-01 11:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册