[Python-3000] __builtin__ and __builtins__

Brett Cannon brett at python.org
Tue Mar 13 00:59:50 CET 2007


On 3/12/07, Guido van Rossum <guido at python.org> wrote:
> On 3/12/07, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
> > Ka-Ping Yee wrote:
> >
> > > We have "import as", though.  If you want to import the default
> > > builtins without using them as the builtins, you can say
> > >
> > >     import __builtin__ as default_builtin
> >
> > Seems to me it would be better to rename the module
> > to a non-double-underscore name. There's really nothing
> > magical about the module itself, only the name used
> > by global variable lookups.
>
> Not true; modifying the module affects every other module (except
> those that have imported some alternative). This is why I renamed it
> to __builtin__ sometime in the dark ages (way before introducing
> __builtins__). I strongly disagree that it's "just" a regular module.
>
> > So just call the module 'builtins', and then you can do
> >
> >     import builtins   # get the module with no magic happening
> >
> >     import mystuff as __builtins__ # change my builtin namespace
> >
> >     import builtins as __builtins__  # restore default builtin namespace
>
> I'm still +1 on Ping's original proposal #3.
>

+1 from me as well.  If you want to change the built-in values then
just import the individual objects into the global namespace, using
``import *`` if you really want to shadow everything.

-Brett


More information about the Python-3000 mailing list