Why does __builtins__ mean different things...

James Stroud jstroud at mbi.ucla.edu
Thu Dec 20 17:29:35 EST 2007


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.

James



More information about the Python-list mailing list