J'utilise le module intégré pour insérer quelques instances, donc on peut y accéder globalement à des fins de débogage. Le problème avec le module __builtins__
est qu'il est un module dans un script principal et est un dict dans les modules, mais comme mon script selon les cas peut être un script principal ou d'un module, je dois le faire:pourquoi __builtins__ est à la fois module et dict
if isinstance(__builtins__, dict):
__builtins__['g_frame'] = 'xxx'
else:
setattr(__builtins__, 'g_frame', 'xxx')
Y a-t-il une solution de contournement, plus courte que celle-ci? Plus important encore, pourquoi __builtins__
se comportent de cette façon?
Voici un script pour le voir. Créer un module a.py:
#module-a
import b
print 'a-builtin:',type(__builtins__)
Créer un module b.py:
#module-b
print 'b-builtin:',type(__builtins__)
a.py python Maintenant, exécutez:
$ python a.py
b-builtin: <type 'dict'>
a-builtin: <type 'module'>
Pour plus d'informations, voir http://stackoverflow.com/questions/11181519/python-whats-the-difference-between-builtin-and-builtins [Possible Dupliquer] – pd12