2009-10-22 3 views

Respuesta

7

De What's New in Python 3.0

Los atributos función llamada func_X han sido renombrados a usar la forma __X__, liberando estos nombres en el espacio de nombres de atributos de Funciones para los atributos definidos por el usuario. A saber, func_closure, func_code, func_defaults, func_dict, func_doc, func_globals, func_name se cambió el nombre a __closure__, __code__, __defaults__, __dict__, __doc__, __globals__, __name__, respectivamente.

Básicamente, lo mismo de Python 2, nuevo nombre de lujo de Python 3000.

Usted puede aprender más sobre la mayor parte de estos en PEP 232

+1

¿Dónde leo sobre 'func_closure'? –

+0

@ cool-RR Simplemente pruébalo de forma interactiva, todo es muy simple. –

+0

Lo intenté, no entendí. –

4

que solía ser llamado

func_closure (now __closure__), func_code (now __code__) 

(que debería ayudar a googlear).

Una breve explicación from here a continuación.

  • func_closure: Ninguno o una tupla de celdas que contienen enlaces para variables libres de la función (sólo lectura)
  • func_code: El código objeto que representa el cuerpo de la función compilado (escribible)
6

en realidad tienes campos análogos en 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'>] 

Editar: Para obtener más detalles sobre el significado de estas construcciones, lea acerca de "funciones definidas por el usuario" y "objetos de código" explained in the Data Model capítulo de la Referencia de Python.