Reputation: 88708
I just checked out this very interesting mindmap:
http://www.mindmeister.com/10510492/python-underscore
And I was wondering what some of the new ones mean, like __code__
and __closure__
. I googled around but nothing concrete. Does anyone know?
Upvotes: 7
Views: 2448
Reputation: 16848
You actually have analogous fields in 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'>]
Edit: For more details on the meaning of these constructs please read about "user defined functions" and "code objects" explained in the Data Model chapter of the Python Reference.
Upvotes: 6
Reputation: 116267
They used to be called
func_closure (now __closure__), func_code (now __code__)
(that should help googling).
A short explanation from here below.
Upvotes: 4
Reputation: 8405
The function attributes named func_X
have been renamed to use the __X__
form, freeing up these names in the function attribute namespace for user-defined attributes. To wit, func_closure
, func_code
, func_defaults
, func_dict
, func_doc
, func_globals
, func_name
were renamed to __closure__
, __code__
, __defaults__
, __dict__
, __doc__
, __globals__
, __name__
, respectively.
Basically, same old Python 2 stuff, fancy new Python 3000 name.
You can learn more about most of these in PEP 232
Upvotes: 7