inconsistent value from __builtins__

Discussion in 'Python' started by Michael Hohn, Oct 1, 2004.

  1. Michael Hohn

    Michael Hohn Guest

    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
    Michael Hohn, Oct 1, 2004
    #1
    1. Advertising

  2. Michael Hohn <> 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
    Alex Martelli, Oct 1, 2004
    #2
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Opinder
    Replies:
    1
    Views:
    476
    Scott David Daniels
    Mar 2, 2004
  2. Remy Blank
    Replies:
    3
    Views:
    870
    Lothar Scholz
    Mar 6, 2004
  3. Jacek Generowicz
    Replies:
    1
    Views:
    388
    Daniel Dittmar
    Apr 8, 2004
  4. Chris Angelico
    Replies:
    0
    Views:
    151
    Chris Angelico
    Oct 11, 2012
  5. Chris Angelico
    Replies:
    0
    Views:
    150
    Chris Angelico
    Oct 14, 2012
Loading...

Share This Page