我需要闭包。

7

13
LOL @ 主题,呵呵呵 - leppie
4个回答

7

来自Python 3.0新特性

名为func_X的函数属性已重命名为使用__X__形式,从而释放这些名称在函数属性命名空间中供用户定义的属性使用。即,func_closurefunc_codefunc_defaultsfunc_dictfunc_docfunc_globalsfunc_name分别重命名为__closure____code____defaults____dict____doc____globals____name__

基本上,与Python 2相同的东西,但有了新颖的Python 3000名称。

您可以在PEP 232中了解更多信息。


我尝试了,但是不理解。 - Ram Rachum
请查看我的回答中的链接以获取更多关于含义的详细信息。 - Andrey Vlasovskikh

6

实际上,在CPython 2.x中,您也有类似的领域:

>>> first = lambda x: lambda y: x
>>> f = first(2)
>>> type(f.func_code)
<type 'code'>
>>> map(type, f.func_closure)
[<type 'cell'>]

编辑:有关这些结构的含义的更多细节,请阅读Python参考手册中“用户定义函数”和“代码对象”一章数据模型的解释。


4

他们曾经被称为

func_closure (now __closure__), func_code (now __code__)

(这应该有助于Google搜索)。

以下是这里的简短解释。

  • func_closure: None或一个元组,其中包含函数自由变量的绑定(只读)
  • func_code: 代表已编译函数体的代码对象(可写)

0

这些是Python的特殊方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接