By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,742 Members | 1,044 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,742 IT Pros & Developers. It's quick & easy.

inconsistent value from __builtins__

P: n/a
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

Jul 18 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
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
Jul 18 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.