课堂里我们检验 f1 是否为闭包的时候,并不是直接print(f1.closure),而是增加了一步,将函数 f1 赋值给变量 f。于是我非常好奇地去 print(f1.closure),发现结果竟然是 None。我有两点疑问:
- 请问这里的 f = f1() 的作用是什么?
- 请问 print(f1.closure) 的结果是 None?
- f = f1 是为了接受内部函数 f2。
- print(f1.closure) 结果是None,是因为 f1 根本不是闭包函数。f2 才是闭包函数。我们使用变量 f 接收 f1 就是为了调用内部函数 f1 进行判断。如果直接在模块中调用内部函数 f2 是根本行不通的。