请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

课堂里有个地方不是特别理解,请指教。

课堂里我们检验 f1 是否为闭包的时候,并不是直接print(f1.closure),而是增加了一步,将函数 f1 赋值给变量 f。于是我非常好奇地去 print(f1.closure),发现结果竟然是 None。我有两点疑问:

  1. 请问这里的 f = f1() 的作用是什么?
  2. 请问 print(f1.closure) 的结果是 None?

我突然想到一点思路:

  1. f = f1 是为了接受内部函数 f2。
  2. print(f1.closure) 结果是None,是因为 f1 根本不是闭包函数。f2 才是闭包函数。我们使用变量 f 接收 f1 就是为了调用内部函数 f1 进行判断。如果直接在模块中调用内部函数 f2 是根本行不通的。

请问这个逻辑是否 make sense?

图片描述

正在回答 回答被采纳积分+3

插入代码

1回答

7七月 2019-02-14 16:46:43

首先你告诉我 f1()和f1的区别是什么?不调用怎么得到闭包?

0 回复 有任何疑惑可以回复我~
  • 提问者 蒋一筒 #1
    这是我后来产生的一些想法,您看这么理解对不对?
    1) f = f1 是为了接受内部函数 f2。
    2) print(f1.closure) 结果是None,是因为 f1 根本不是闭包函数。f2 才是闭包函数。我们使用变量 f 接收 f1 就是为了调用内部函数 f1 进行判断。如果直接在模块中调用内部函数 f2 是根本行不通的。
    回复 有任何疑惑可以回复我~ 2019-02-14 17:31:59
  • 7七月 回复 提问者 蒋一筒 #2
    是的,这才是闭包。
    回复 有任何疑惑可以回复我~ 2019-02-14 22:40:24
  • 提问者 蒋一筒 回复 7七月 #3
    谢谢。
    回复 有任何疑惑可以回复我~ 2019-02-18 10:29:22
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号