11-12闭包的定义
来源:11-13 闭包的经典误区
天上掉下个小馅饼
2018-07-18
老师老师,我在后面的学习中,出现了这样的问题:
1、为什么这个是属于闭包呢,我在里面引用了x了耶
2、为什么我把return修改之后他就不是闭包了呢,不是说跟return无关的吗
麻烦老师了
写回答
3回答
-
我对你这个问题有解答的,第一个为什么是闭包的原因是:你在go函数里面引用了pos这个变量,并且使用了他,所以形成了闭包,而pos是在外围的factory函数里面进行定义的,执行一下print(t.__closure__[0].cell_contents)这个语句,你就会发现结果是0,而pos在函数调用的使用,被origin替换,被换成了0,所以打印为0,而后两个图都不是闭包的原因是没有引用pos这个外部定义的变量,自然不是闭包
ps:我想撤回我之前的回答,我感觉好像错了
222019-02-15 -
光荣交白卷哥
2018-08-02
origin = 0 def factory(pos): x = 10 def go(): x = 20 print(pos) return go tourist = factory(origin) print(tourist) print(tourist.__closure__)
10 -
7七月
2018-07-19
你咋说 没有return就不是闭包了呢,是基于什么判断的?
062019-02-27
相似问题