我需要__closure__

时间:2009-10-22 20:18:20

标签: python python-3.x

我刚刚查看了这个非常有趣的思维导图:

http://www.mindmeister.com/10510492/python-underscore

我想知道一些新的含义,例如__code____closure__。我用Google搜索,但没有具体的东西。有谁知道吗?

4 个答案:

答案 0 :(得分:7)

来自What's New in Python 3.0

名为func_X的函数属性已重命名为使用__X__表单,在函数属性名称空间中为用户定义的属性释放这些名称。也就是说,func_closurefunc_codefunc_defaultsfunc_dictfunc_docfunc_globalsfunc_name已重命名为{{1}分别是{},__closure____code____defaults____dict____doc____globals__

基本上,同样是旧的Python 2,花哨的新Python 3000名称。

您可以在PEP 232

中详细了解其中大部分内容

答案 1 :(得分: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参考资料中的“用户定义函数”和“代码对象”explained in the Data Model章节。

答案 2 :(得分:4)

他们曾经被称为

func_closure (now __closure__), func_code (now __code__)

(这应该有助于谷歌搜索)。

以下简短说明from here

  • func_closure:无或包含函数自由变量绑定的单元格元组(只读)
  • func_code:代码对象 表示编译的函数 身体(可写)

答案 3 :(得分:0)

这些是Python的special方法。