闭包问题(y为什么变成了全局变量)
def fun1(x):def fun2(y):
return x*y
return fun2(y)
y=2
a=fun1(2)
print(a)
#为什么y变成了全局变量 你在全局范围声明的 y,y 自然是全局变量。 因为你将y放在了函数外,如果你想y是局部变量,那就在函数内定义 永恒的蓝色梦想 发表于 2020-7-5 17:18
你在全局范围声明的 y,y 自然是全局变量。
{:10_250:} 不提醒下我错了哈哈哈 Twilight6 发表于 2020-7-5 17:22
不提醒下我错了哈哈哈
额,啥 永恒的蓝色梦想 发表于 2020-7-5 17:24
额,啥
刚刚 copy 大法运用太过娴熟,所以没认真看题目 {:10_266:}现在删了 1.你在全局范围声明的 y,y 自然是全局变量
y=2这是你给全局变量y赋值2的操作
2.你会提这个问题应该你你把这个全局变量y当成fun1的内嵌函数fun2的参数了,其实他们没有半毛钱关系,只是长的一样而已
3.你这段代码运行后的结果应该不是你想要的结果,把a=fun1(2)后面再加一个参数,如a=fun(2)(3),运行代码才会有你想要的效果 你在外面声明的y,当然是全局变量了 我看你函数闭包写错了把,应该在fun1里同时传x, y像这样:
def fun1(x, y):
def fun2(y):
return x * y
return fun2(y)
a = fun1(2, 2)
#这时候a就是2 * 2也就是4了 变量y是在全局范围声明的
页:
[1]