2009-10-22 8 views

Odpowiedz

7

Od What's New in Python 3.0

atrybutów funkcyjnych wymienionych func_X zostały przemianowane na skorzystanie z formularza __X__, zwalniając tych nazw w obszarze nazw atrybutu funkcyjnego dla atrybutów zdefiniowanych przez użytkownika. Mianowicie, func_closure, func_code, func_defaults, func_dict, func_doc, func_globals, func_name zostały przemianowane na __closure__, __code__, __defaults__, __dict__, __doc__, __globals__, __name__ odpowiednio.

Zasadniczo ten sam stary materiał Pythona 2, fantazyjna nowa nazwa Python 3000.

Możesz dowiedzieć się więcej o większość z nich w PEP 232

+1

Gdzie mogę przeczytać o 'func_closure'? –

+0

@ cool-RR Po prostu spróbuj interaktywnie, to wszystko jest bardzo proste. –

+0

Próbowałem, nie rozumiałem. –

4

kiedyś nazywane

func_closure (now __closure__), func_code (now __code__) 

(które powinny pomóc googlowania).

Krótkie wyjaśnienie poniżej: from here.

  • func_closure: Brak lub krotką komórek zawierających powiązania dla wolnych zmienne funkcji (tylko do odczytu)
  • func_code: Przedmiotem kodu reprezentujący skompilowany funkcja ciało (zapisu)
6

rzeczywiście mają analogiczne pola w 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: Aby uzyskać więcej informacji na temat znaczenia tych konstrukcji, przeczytaj o "funkcjach zdefiniowanych przez użytkownika" i "obiektach kodu" explained in the Data Model rozdział w Pythonie.

Powiązane problemy