__builtins__

Discussion in 'Python' started by loquehumaine@gmail.com, Feb 8, 2008.

  1. Guest

    Hi there,
    I'm a newby in python (I know a little in programmation) and I have
    a lot of questions on builtins but my first one is about modules...

    I have seen that if I type help() at a prompt, and then 'modules',
    I'll be given a list of all modules available, thanks to this group..
    But I have seen the differences between them and the one in
    dir(__builtins__).
    Why are some modules in __builtins__ and others don't ? (UserDict for
    example)
    Why dir(__builtins__) gives me "math" but not help(__builtins__) ?

    What are the differences between __builtins__ and __builtin__ ? (By
    the way, I have python 2.4)

    Finally, if I do del(__builtins__), what can I do to repair the
    "mistake" (as I got an import error __import__ not found if I want to
    import __builtins__...?

    That's may be obvious for you, but that's all strange to me and I
    didn't find answers on the net...
    , Feb 8, 2008
    #1
    1. Advertising

  2. On Fri, 08 Feb 2008 00:25:14 -0800, loquehumaine wrote:

    > I have seen that if I type help() at a prompt, and then 'modules',
    > I'll be given a list of all modules available, thanks to this group..
    > But I have seen the differences between them and the one in
    > dir(__builtins__).
    > Why are some modules in __builtins__ and others don't ? (UserDict for
    > example)


    `__builtins__` doesn't contain modules::

    Python 2.4.4 (#2, Apr 12 2007, 21:03:11)
    [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import inspect
    >>> inspect.getmembers(__builtins__, inspect.ismodule)

    []

    > Why dir(__builtins__) gives me "math" but not help(__builtins__) ?


    So there's no 'math' in `__builtins__`::

    >>> 'math' in dir(__builtins__)

    False

    > What are the differences between __builtins__ and __builtin__ ? (By
    > the way, I have python 2.4)


    `__builtins__` is an implementation detail, and `__builtin__` is a name
    of a module you can import. You should not use `__builtins__` but import
    `__builtin__` and inspect that instead of `__builtins__`.

    The (symmetric) difference of the two is empty::

    >>> import __builtin__
    >>> set(dir(__builtins__)).symmetric_difference(dir(__builtin__))

    set([])

    > Finally, if I do del(__builtins__), what can I do to repair the
    > "mistake" (as I got an import error __import__ not found if I want to
    > import __builtins__...?


    Don't ``del __builtins__`` in the first place. :)

    > That's may be obvious for you, but that's all strange to me and I
    > didn't find answers on the net...


    So the real question is, why you see 'math' in `__builtins__`. It should
    not be there.

    Ciao,
    Marc 'BlackJack' Rintsch
    Marc 'BlackJack' Rintsch, Feb 8, 2008
    #2
    1. Advertising

  3. LHB Guest

    Marc 'BlackJack' Rintsch a écrit :
    > On Fri, 08 Feb 2008 00:25:14 -0800, loquehumaine wrote:
    >
    >> I have seen that if I type help() at a prompt, and then 'modules',
    >> I'll be given a list of all modules available, thanks to this group..
    >> But I have seen the differences between them and the one in
    >> dir(__builtins__).
    >> Why are some modules in __builtins__ and others don't ? (UserDict for
    >> example)

    >
    > `__builtins__` doesn't contain modules::

    You are right... I don't know why I thought there was math here... It's
    not in sys.modules either...
    Is there "a place" where you can find a list of 'some' available modules
    ('standard' ones like math, sys, ...) but not all, or I really need a
    break during the week-end?
    If so, what the difference between the 'present' and the 'missing' ones?

    For example, in http://docs.python.org/modindex.html for math: "This
    module is always available." unlike pickle or HTMLParser. Is this only
    because of the versions of Python?

    I think I have mixed-up a lot of things and that I need a little bit
    more of readings about builtin things... (Doc that goes further than
    http://docs.python.org/lib/builtin.html)

    > Python 2.4.4 (#2, Apr 12 2007, 21:03:11)
    > [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
    > Type "help", "copyright", "credits" or "license" for more information.
    > >>> import inspect
    > >>> inspect.getmembers(__builtins__, inspect.ismodule)

    > []

    At least I have learn a new module =)


    > `__builtins__` is an implementation detail, and `__builtin__` is a name
    > of a module you can import. You should not use `__builtins__` but import
    > `__builtin__` and inspect that instead of `__builtins__`.

    Ok. Should I only see `__builtins__` as an access to builtin
    functions/exception/... ?

    > Don't ``del __builtins__`` in the first place. :)

    Fair enough ^_^

    > So the real question is, why you see 'math' in `__builtins__`. It should
    > not be there.

    I think the answer is that I need more rest...

    >
    > Ciao,
    > Marc 'BlackJack' Rintsch

    Thanks a lot,

    LHB
    LHB, Feb 8, 2008
    #3
  4. Ben Finney Guest

    LHB <> writes:

    > Marc 'BlackJack' Rintsch a écrit :
    > > `__builtins__` is an implementation detail, and `__builtin__` is a name
    > > of a module you can import. You should not use `__builtins__` but import
    > > `__builtin__` and inspect that instead of `__builtins__`.

    > Ok. Should I only see `__builtins__` as an access to builtin
    > functions/exception/... ?


    No, if you want that access, explicitly 'import __builtin__' and
    access them that way. Ignore '__builtins__' altogether as an
    implementation detail. (This is difficult to adhere to because the
    names are confusingly similar; this is an acknowledged wart in current
    Python.)

    IIRC this behaviour will change in Python 3.0, where 'import
    __builtin__' will be the *only* way to get at builtins from normal
    code. At least, I'm now writing my code as though that's the case :)

    --
    \ “The man who is denied the opportunity of taking decisions of |
    `\ importance begins to regard as important the decisions he is |
    _o__) allowed to take.†—C. Northcote Parkinson |
    Ben Finney
    Ben Finney, Feb 9, 2008
    #4
    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:
    473
    Scott David Daniels
    Mar 2, 2004
  2. Remy Blank
    Replies:
    3
    Views:
    866
    Lothar Scholz
    Mar 6, 2004
  3. Jacek Generowicz
    Replies:
    1
    Views:
    384
    Daniel Dittmar
    Apr 8, 2004
  4. Chris Angelico
    Replies:
    0
    Views:
    145
    Chris Angelico
    Oct 11, 2012
  5. Chris Angelico
    Replies:
    0
    Views:
    149
    Chris Angelico
    Oct 14, 2012
Loading...

Share This Page