Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

inconsistent value from __builtins__

386 views
Skip to first unread message

Michael Hohn

unread,
Oct 1, 2004, 6:16:32 PM10/1/04
to
Hi,
using the file builtin_check.py with content

# Module builtin_check
# Inconstency in the binding of __builtins__

def get_binding(name):
return locals()[name]

def get_global_binding(name):
return globals()[name]

and running

import builtin_check
print type(builtin_check.get_global_binding('__builtins__'))
print type(__builtins__)

in the toplevel, I get the following results:

Python 2.2.3 (#2, Jun 16 2004, 21:14:24)
[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import builtin_check
>>> print type(builtin_check.get_global_binding('__builtins__'))
<type 'dict'>
>>> print type(__builtins__)
<type 'module'>


Python 2.3.3 (#1, May 10 2004, 11:29:59)
[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import builtin_check
>>> print type(builtin_check.get_global_binding('__builtins__'))
<type 'dict'>
>>> print type(__builtins__)
<type 'module'>

Is this difference in return value intentional?


Thanks,
Michael

Alex Martelli

unread,
Oct 1, 2004, 6:45:34 PM10/1/04
to
Michael Hohn <ho...@hooknose.lbl.gov> wrote:
...

> >>> print type(builtin_check.get_global_binding('__builtins__'))
> <type 'dict'>
> >>> print type(__builtins__)
> <type 'module'>
...

> Is this difference in return value intentional?

Well, it's _documented_ that '__builtins__' can be either a dictionary
or a module, and it's been that way for a long time. Whether it's
intentional (or sensible), I don't know. In any case, the idea is that
if you need to access the built-in namespace directly, you should start
with "import __builtin__" (note, no 's') which will definitely give you
a module. Yeah, it _is_ somewhat confusing:-(.


Alex

0 new messages