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

来源:11-13 闭包的经典误区

蒋一筒

2019-02-14

课堂里我们检验 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?

图片描述

写回答

1回答

7七月

2019-02-14

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

0
3
蒋一筒
回复
7七月
谢谢。
2019-02-18
共3条回复

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14640 学习 · 4477 问题

查看课程