Używam wbudowanego modułu do wstawienia kilku instancji, aby można było uzyskać do nich dostęp globalnie w celu debugowania. Problem z modułem __builtins__
polega na tym, że jest to moduł w głównym skrypcie i jest dyktando w modułach, ale ponieważ mój skrypt w zależności od przypadku może być skryptem głównym lub modułem, muszę to zrobić:dlaczego __builtins__ jest modułem i dyktafonem
if isinstance(__builtins__, dict):
__builtins__['g_frame'] = 'xxx'
else:
setattr(__builtins__, 'g_frame', 'xxx')
Czy istnieje obejście krótsze niż to? Co ważniejsze, dlaczego zachowuje się w ten sposób __builtins__
?
Oto skrypt, aby to zobaczyć. Tworzenie a.py modułu:
#module-a
import b
print 'a-builtin:',type(__builtins__)
Utwórz b.py modułu:
#module-b
print 'b-builtin:',type(__builtins__)
Teraz uruchom pyton a.py:
$ python a.py
b-builtin: <type 'dict'>
a-builtin: <type 'module'>
Aby uzyskać więcej informacji, zobacz http://stackoverflow.com/questions/11181519/python-whats-the-difference-between-builtin-and-builtins [Możliwy duplikat] – pd12