Estoy utilizando el módulo integrado para insertar algunas instancias, por lo que se puede acceder a ellas de forma global para fines de depuración. El problema con el módulo __builtins__
es que se trata de un módulo en un script principal y es un diccionario en módulos, pero como mi guión en función de los casos puede ser un script principal o un módulo, tengo que hacer esto:por qué __builtins__ es el módulo y dict
if isinstance(__builtins__, dict):
__builtins__['g_frame'] = 'xxx'
else:
setattr(__builtins__, 'g_frame', 'xxx')
¿Hay una solución, más corta que esto? Más importante aún, ¿por qué __builtins__
se comporta de esta manera?
Aquí hay una secuencia de comandos para ver esto. Crear un módulo de a.py:
#module-a
import b
print 'a-builtin:',type(__builtins__)
Crear una b.py módulo:
#module-b
print 'b-builtin:',type(__builtins__)
Ahora ejecute a.py pitón:
$ python a.py
b-builtin: <type 'dict'>
a-builtin: <type 'module'>
Para obtener más información, ver http://stackoverflow.com/questions/11181519/python-whats-the-difference-between-builtin-and-builtins [Posible duplicado] – pd12