On Thu, 20 Dec 2007 14:29:35 -0800, James Stroud <[EMAIL PROTECTED]> wrote: >Hello all, > >Say I have the following module > ># amodule.py >print __builtins__ ># end of module > >Then I have the following little helper script: > ># helper.py >import amodule ># end of helper script > >Now, I do this at the command line: > >python amodule.py > >And I get the following output: > ><module '__builtin__' (built-in)> > >Which is good. > >Now, I do this: > >python helper.py > >and I get the following output: > >{'IndexError': <type 'exceptions.IndexError'>, 'all;: >... [etc] > >I.e.: __builtins__ is a dict when referenced in an imported module, but >in *the exact same code*, when executed as a script, it becomes a >module! Is this a bug? > >In other words, what is the good of this? For the purposes of argument, >the bad of this is the behavior above. I'm guessing its a bug. >
__builtins__ is "a CPython implementation detail". In other words, unless you are doing really funny stuff, you shouldn't use it. What you're probably looking for is the __builtin__ module (difference in spelling intentional). You have to import it explicitly. Once you do so, it behaves in a very unsurprising manner. Jean-Paul -- http://mail.python.org/mailman/listinfo/python-list