__builtins__

L

loquehumaine

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...
 
M

Marc 'BlackJack' Rintsch

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. []
Why dir(__builtins__) gives me "math" but not help(__builtins__) ?

So there's no 'math' in `__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::
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
 
L

LHB

Marc 'BlackJack' Rintsch a écrit :
`__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.[]
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
 
B

Ben Finney

LHB said:
Marc 'BlackJack' Rintsch a écrit :
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 :)
 

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

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,042
Latest member
icassiem

Latest Threads

Top