Python闭包问题
def one(x):def two(y):
return x*y
return two
temp=one(4)
print(temp(5))
可以打印出20,但原理想不明白,哪位大佬能仔细讲讲运作过程吗
本帖最后由 Twilight6 于 2020-8-22 10:48 编辑
这里的 temp=one(4) 相当于 one 参数中的 x = 4 了,传入后的参数可以看成这样:
def one(4):
def two(y):
return 4*y
return two
因为 one 函数调用后返回的是 two 函数,所以代码可以看成这样了:
def two(y):
return 4*y
此时的 temp = one(4) 也就等于这里的two 即 temp = two
然后你再次调用 temp(5) ,而 temp(5) 也就相当于将相当于 two(5),所以此时结果就是4*5 返回 20
你也可以去看看这个例子,应该有助于你的理解:
https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=172822&pid=4777716
Twilight6 发表于 2020-8-22 10:45
看看这个例子,应该有助于你的理解:
https://fishc.com.cn/forum.php?mod=redirect&goto=findpost& ...
thanks 感谢分享
页:
[1]