2012-01-28 9 views

Odpowiedz

57

Moduł __builtin__ przemianowano builtins w Python3.

Ta zmiana rozwiązuje dwa źródła nieporozumień dla przeciętnego programisty w Pythonie.

  • Czy '__builtins__' lub '__builtin__' że jest w globalnej przestrzeni nazw? Darn s!
  • Czy __builtin__ a special method name lub moduł? Nie mogę powiedzieć: .

To zamieszanie powstaje głównie z powodu naruszenia konwencji pep8. Również brak pluralizacji na module utrudnia również komunikację. Obie te są znacznie ilustrują długościach Guido musi przejść, aby wyjaśnić co następuje od http://mail.python.org/pipermail/python-ideas/2009-March/003821.html:

[CPython] patrzy na globalnych, które zawierają specjalną magiczną wpis __builtins__ (z „s”), który jest dyktować, gdzie są wyszukiwane wbudowane funkcje. Kiedy ten dict jest taki sam przedmiot jak domyślnie wbudowanym dict (co jest __builtin__.__dict__ gdzie __builtin__ - bez „s” - jest moduł określający wbudowanych funkcji) daje Ci uprawnieniami administratora; ...

Przykładowo

Python2.7

>>> import __builtin__ 
>>> vars(globals()['__builtins__']) is vars(__builtin__) 
True 
>>> 

Python3.2

>>> import builtins 
>>> vars(globals()['__builtins__']) is vars(builtins) 
True 
>>> 

Powiązane zasoby:

Inne zmiany nazwy - http://docs.pythonsprints.com/python3_porting/py-porting.html#name-changes

Dla zwięzłe wyjaśnienie, w jaki jest używany w __builtins__ rozpoznawania nazw - __builtin__ module in Python

Powiązane problemy