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

__builtins__

P: n/a
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 '08 #1
Share this Question
Share on Google+
3 Replies


P: n/a
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
Feb 8 '08 #2

P: n/a
LHB
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
Feb 8 '08 #3

P: n/a
LHB <lo**********@gmail.comwrites:
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
Feb 9 '08 #4

This discussion thread is closed

Replies have been disabled for this discussion.