inconsistent value from __builtins__

M

Michael Hohn

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.<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.<type 'module'>

Is this difference in return value intentional?


Thanks,
Michael
 
A

Alex Martelli

Michael Hohn said:
<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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,997
Messages
2,570,241
Members
46,831
Latest member
RusselWill

Latest Threads

Top