Ich benutze das eingebaute Modul, um ein paar Instanzen einzufügen, so dass sie global für Debugging-Zwecke zugegriffen werden können. Das Problem mit dem __builtins__
Modul ist, dass es sich um ein Modul in einem Hauptskript und ist ein dict in Module, aber als mein Skript über Fälle je kann ein Hauptskript oder ein Modul sein, ich habe dies zu tun:Warum __builtins__ ist Modul und dict
if isinstance(__builtins__, dict):
__builtins__['g_frame'] = 'xxx'
else:
setattr(__builtins__, 'g_frame', 'xxx')
Gibt es einen Workaround, kürzer als das? Noch wichtiger, warum verhält sich __builtins__
so?
Hier ist ein Skript, um dies zu sehen. Erstellen Sie ein Modul a.py:
#module-a
import b
print 'a-builtin:',type(__builtins__)
Erstellen Sie ein Modul b.py:
#module-b
print 'b-builtin:',type(__builtins__)
Jetzt laufen Python a.py:
$ python a.py
b-builtin: <type 'dict'>
a-builtin: <type 'module'>
Weitere Informationen finden Sie http://stackoverflow.com/questions/11181519/python-whats-the-difference-between-builtin-and-builtins [Mögliche Duplikate] – pd12