Sto utilizzando il modulo integrato per inserire alcune istanze, quindi è possibile accedervi globalmente a scopo di debug. Il problema con il modulo __builtins__
è che si tratta di un modulo in uno script principale ed è un dict in moduli, ma come il mio script a seconda dei casi può essere uno script principale o un modulo, devo fare questo:perché __builtins__ è sia modulo che dict
if isinstance(__builtins__, dict):
__builtins__['g_frame'] = 'xxx'
else:
setattr(__builtins__, 'g_frame', 'xxx')
C'è una soluzione alternativa, più corta di questa? Ancora più importante, perché __builtins__
si comporta in questo modo?
Ecco uno script per vedere questo. Creare un a.py modulo:
#module-a
import b
print 'a-builtin:',type(__builtins__)
Creare un b.py modulo:
#module-b
print 'b-builtin:',type(__builtins__)
Ora eseguire a.py python:
$ python a.py
b-builtin: <type 'dict'>
a-builtin: <type 'module'>
Per ulteriori informazioni, vedere http://stackoverflow.com/questions/11181519/python-whats-the-difference-between-builtin-and-builtins [Possibile duplicato] – pd12