Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Le module __builtin__ : où est-il ?

3 views
Skip to first unread message

Francois

unread,
Apr 19, 2008, 5:54:37 PM4/19/08
to
Bonjour à tous,

Il parait qu'un certain module, nommé «__builtin__», serait
automatiquement préchargé au début de n'importe quel script python. Il
permet apparemment de prédéfinir plein d'objets, comme par exemple les
objets True, False, None et plein d'autres choses.

J'ai voulu voir ce qu'il y avait dedans par curiosité uniquement, mais
impossible de le trouver sur mon ordinateur. Où est-il ? Existe-t-il ou
est-ce je ne sais quelle abstraction ?

Je suis sur Ubuntu 7.10 et j'ai Python version 2.5.1

Merci d'avance.


--
François

Méta-MCI (MVP)

unread,
Apr 20, 2008, 2:14:22 AM4/20/08
to
Bonjour !

__builtin__ est à l'intérieur de Python. Dans le noyau, comme une
amande.

Pour voir ce qu'il y a dedans :

import __builtin__
print dir(__builtin__)


ou, pour avoir un peu plus de détails :

import __builtin__
for i in dir(__builtin__):
print i,'\r\n',help(i)


@+

Michel Claveau

Francois

unread,
Apr 20, 2008, 7:28:07 AM4/20/08
to
Méta-MCI (MVP) a écrit :

> Bonjour !
>
> __builtin__ est à l'intérieur de Python. Dans le noyau, comme une amande.
>
> Pour voir ce qu'il y a dedans : [couic]


Ok, merci pour la réponse.

Donc si je comprends bien, il n'existe même pas de fichier source
__builtin__.py ? C'est bien cela ? Par exemple exemple avec
l'implémentation CPython il est directement codé en C ?

C'est un peu curieux alors d'appeler ça un module si c'est intégré dans
le noyau Python et que c'est préchargé automatiquement à chaque script,
non ? En quoi est-ce un module alors ? Moi j'aurais tendance à dire que
ça fait directement partie du langage, non ?

--
François

bruno.des...@gmail.com

unread,
Apr 20, 2008, 10:25:54 AM4/20/08
to
On 20 avr, 13:28, Francois <mathsatta...@free.fr> wrote:
> Méta-MCI (MVP) a écrit :
>
> > Bonjour !
>
> > __builtin__ est à l'intérieur de Python. Dans le noyau, comme une amande.
>
> > Pour voir ce qu'il y a dedans : [couic]

> Ok, merci pour la réponse.
>
> Donc si je comprends bien, il n'existe même pas de fichier source
> __builtin__.py ? C'est bien cela ?

Yeps.

> Par exemple exemple avec
> l'implémentation CPython il est directement codé en C ?

Yeps.

> C'est un peu curieux alors d'appeler ça un module si c'est intégré dans
> le noyau Python et que c'est préchargé automatiquement à chaque script,
> non ? En quoi est-ce un module alors ?

En ce que ça ne fait pas partie du langage à proprement parler, et en
ce que tu peux l'importer, ce qui te donne un objet module.

> Moi j'aurais tendance à dire que
> ça fait directement partie du langage, non ?

Non, dans le sens où 1/ ce n'est pas défini par la grammaire du
langage, et 2/ un interpréteur Python peut charger une version
modifiée ou restreinte de ce module.

Francois

unread,
Apr 20, 2008, 11:43:59 AM4/20/08
to
Merci pour la réponse, j'ai quelques remarques.

bruno.des...@gmail.com a écrit :


>> C'est un peu curieux alors d'appeler ça un module si c'est intégré dans
>> le noyau Python et que c'est préchargé automatiquement à chaque script,
>> non ? En quoi est-ce un module alors ?
>
> En ce que ça ne fait pas partie du langage à proprement parler, et en
> ce que tu peux l'importer, ce qui te donne un objet module.

Pardon de pinailler, mais si je regarde par exemple dans le «Python
Reference Manual» de Guido van Rossum dont le but est de décrire le
langage, il est question du type None. Ça me laisse penser que l'objet
None par exemple fait bien partie du langage Python. Pourtant, il est
clairement défini par le «module» __builtin__. Donc dire que __builtin__
ne fait pas partie du langage me gêne un peu car cela voudrait dire que
None par exemple ne ferait pas partie du langage. Non ?


>> Moi j'aurais tendance à dire que
>> ça fait directement partie du langage, non ?
>
> Non, dans le sens où 1/ ce n'est pas défini par la grammaire du
> langage,

Mais dans les types de bases du langage il y a le type None qui est
défini par __builtin__ comme je l'ai dit juste au dessus, non ?

> et 2/ un interpréteur Python peut charger une version
> modifiée ou restreinte de ce module.

Est-il possible de charger l'interpréteur sans que __builtin__ soit chargé ?

--
François

yves

unread,
Apr 20, 2008, 12:21:58 PM4/20/08
to
Le Sun, 20 Apr 2008 17:43:59 +0200, Francois a écrit:

Bonjour,

> Pardon de pinailler, mais si je regarde par exemple dans le «Python
> Reference Manual» de Guido van Rossum dont le but est de décrire le
> langage, il est question du type None. Ça me laisse penser que l'objet
> None par exemple fait bien partie du langage Python. Pourtant, il est
> clairement défini par le «module» __builtin__. Donc dire que __builtin__
> ne fait pas partie du langage me gêne un peu car cela voudrait dire que
> None par exemple ne ferait pas partie du langage. Non ?

Grâce à l'interpréteur Python, je constate une petite complication (que
je suis incapable d'expliquer, quoique l'explication doit être là: http://
docs.python.org/lib/module-builtin.html):

La petite complication:

> dir(__builtin__)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '__builtin__' is not defined
/> dir(__builtins__)
['ArithmeticError', 'AssertionError', 'Snip .....']
/> dir(__builtin__)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '__builtin__' is not defined
/> import __builtin__
/> dir(__builtin__)
['ArithmeticError', 'AssertionError', 'Snip .....']

En clair, None n'est pas "défini que par le module __builtin__"

--
Yves

bruno.des...@gmail.com

unread,
Apr 20, 2008, 12:27:21 PM4/20/08
to
On 20 avr, 17:43, Francois <mathsatta...@free.fr> wrote:
> Merci pour la réponse, j'ai quelques remarques.
>
> bruno.desthuilli...@gmail.com a écrit :

>
> >> C'est un peu curieux alors d'appeler ça un module si c'est intégré dans
> >> le noyau Python et que c'est préchargé automatiquement à chaque script,
> >> non ? En quoi est-ce un module alors ?
>
> > En ce que ça ne fait pas partie du langage à proprement parler, et en
> > ce que tu peux l'importer, ce qui te donne un objet module.
>
> Pardon de pinailler, mais si je regarde par exemple dans le «Python
> Reference Manual» de Guido van Rossum dont le but est de décrire le
> langage, il est question du type None. Ça me laisse penser que l'objet
> None par exemple fait bien partie du langage Python. Pourtant, il est
> clairement défini par le «module» __builtin__. Donc dire que __builtin__
> ne fait pas partie du langage me gêne un peu car cela voudrait dire que
> None par exemple ne ferait pas partie du langage. Non ?

Effectivement, il serait difficile de se passer de None... Pas
toujours évident de tracer une belle limite bien propre.

> >> Moi j'aurais tendance à dire que
> >> ça fait directement partie du langage, non ?
>
> > Non, dans le sens où 1/ ce n'est pas défini par la grammaire du
> > langage,
>
> Mais dans les types de bases du langage il y a le type None qui est
> défini par __builtin__ comme je l'ai dit juste au dessus, non ?

Oui. Là dessus, tu a raison et j'ai tort.

> > et 2/ un interpréteur Python peut charger une version
> > modifiée ou restreinte de ce module.
>
> Est-il possible de charger l'interpréteur sans que __builtin__ soit chargé ?

Je me posais justement la question en te répondant. Je me demandais
aussi ce qu'il en était avec Jython et IronPython.

Bon, pour le professorat, il me reste encore du boulot !-)

yves

unread,
Apr 20, 2008, 12:40:24 PM4/20/08
to
Le Sun, 20 Apr 2008 16:21:58 +0000, yves a écrit:

> En clair, None n'est pas "défini que par le module __builtin__"

Autrement dit, quand on fait dir(__builtins__) (noter le "s"), sans
importer quoi que ce soit, on constate que None est là.

Note pour moi-même: recopier 100 fois: "Explicit is better than implicit."

--
Yves

Francois

unread,
Apr 20, 2008, 12:55:35 PM4/20/08
to bruno.des...@gmail.com
bruno.des...@gmail.com a écrit :

> Effectivement, il serait difficile de se passer de None... Pas
> toujours évident de tracer une belle limite bien propre.

Oui, c'est exactement ça. C'est une question de point de vue. Comme je
suppose qu'en général __builtin__ doit être codé en autre chose que du
Python (en C par exemple), j'aurais tendance à dire qu'il fait des
briques primitives du langage. Mais au final, on s'en fiche un peu.


>> Est-il possible de charger l'interpréteur sans que __builtin__ soit chargé ?
>
> Je me posais justement la question en te répondant. Je me demandais
> aussi ce qu'il en était avec Jython et IronPython.
>
> Bon, pour le professorat, il me reste encore du boulot !-)

:-))


--
François

Francois

unread,
Apr 20, 2008, 12:57:28 PM4/20/08
to
Francois a écrit :

> j'aurais tendance à dire qu'il fait des
> briques primitives du langage. Mais au final, on s'en fiche un peu.

Il faut lire «... fait *partie* des briques ...» bien sûr.
Pardon, il faut que je me relise.

--
François

Francois

unread,
Apr 20, 2008, 1:06:42 PM4/20/08
to
yves a écrit :

Non non, la question est légitime je trouve. Il y a en effet une
subtilité entre le module __builtin__ et l'attribut __builtins__ (avec
un "s") qui m'échappe complètement et que j'aimerais bien comprendre.

Effectivement, quand on charge l'interpréteur tel quel (sans rien
importer), on a accès à tout ce que définit __builtin__, comme None ou
max() par exemple. Mais en revanche, l'interpréteur ne connaît pas
__builtin__ mais connaît __builtins__ (avec un "s"). Exemple :

################################################

>>> __builtin__.max(1,2) # Donne une erreur !!!

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '__builtin__' is not defined


>>> __builtins__.max(1,2) # Marche très bien !!!

2

################################################

Je ne comprends pas ce qu'est ce __builtins__ (avec un "s") exactement ?


--
François

bruno.des...@gmail.com

unread,
Apr 20, 2008, 2:33:04 PM4/20/08
to

import __builtin__
dir(__builtin__)
__builtin__ is __builtins__

Là, on entre dans les recoins un peu ??? de l'implémentation.

bruno.des...@gmail.com

unread,
Apr 20, 2008, 3:58:57 PM4/20/08
to
On 20 avr, 19:06, Francois <mathsatta...@free.fr> wrote:
> yves a écrit :
>
> > Le Sun, 20 Apr 2008 16:21:58 +0000, yves a écrit:
>
> >> En clair, None n'est pas "défini que par le module __builtin__"
>
> > Autrement dit, quand on fait dir(__builtins__) (noter le "s"), sans
> > importer quoi que ce soit, on constate que None est là.
>
> > Note pour moi-même: recopier 100 fois: "Explicit is better than implicit."
>
> Non non, la question est légitime je trouve. Il y a en effet une
> subtilité entre le module __builtin__ et l'attribut __builtins__ (avec
> un "s") qui m'échappe complètement et que j'aimerais bien comprendre.
>
> Effectivement, quand on charge l'interpréteur tel quel (sans rien
> importer), on a accès à tout ce que définit __builtin__, comme None ou
> max() par exemple. Mais en revanche, l'interpréteur ne connaît pas
> __builtin__ mais connaît __builtins__ (avec un "s"). Exemple :
(snip)

> Je ne comprends pas ce qu'est ce __builtins__ (avec un "s") exactement ?

C'est dans le FameuxManuel(tm):

http://docs.python.org/lib/module-builtin.html

HTH

Francois

unread,
Apr 20, 2008, 8:09:28 PM4/20/08
to
bruno.des...@gmail.com a écrit :

>> Je ne comprends pas ce qu'est ce __builtins__ (avec un "s") exactement ?
>
> C'est dans le FameuxManuel(tm):
>
> http://docs.python.org/lib/module-builtin.html
>
> HTH


C'est curieux. Dans le __main__,

#----------------------------------------
import __builtin__
__builtin__ == __builtins__ # donne True

mais dans un module

import __builtin__
__builtin__ == __builtins__ # donne False
#----------------------------------------

J'ai l'impression que dans le __main__ on a :

__builtin__ == __builtins__

Alors que dans un module autre que le __main__, on a :

__builtin__.__dict__ == __builtins__

Il y a là une subtilité qui m'échappe complètement.

--
François

Bruno Desthuilliers

unread,
Apr 21, 2008, 4:06:25 AM4/21/08
to
Francois a écrit :

Il me semble que c'est évoqué dans le lien ci-avant...

> Il y a là une subtilité qui m'échappe complètement.
>

Heu... Comment dire... Ce n'est pas que la question soit totalement
dépourvue d'intérêt, et ta curiosité est légitime, mais par ailleurs, on
est là quelque peu dans les détails d'implémentation, et je n'ai
moi-même jamais eu à me soucier de ces détails depuis que j'utilise
Python (sachant que mes premiers contacts avec la bête remonte quand
même à quelque part entre fin 1999 et fin 2000).

Maintenant, si ton niveau en anglais est à peu près correct, tu peux
toujours aller poser la question sur c.l.py où rodent quelques membre du
dev-team. Ils seront certainement les plus à même de t'éclairer sur ces
points. Moi à ce stade, je déclare forfait !-)

Francois

unread,
Apr 21, 2008, 4:55:48 AM4/21/08
to
Bruno Desthuilliers a écrit :

>
> Heu... Comment dire... Ce n'est pas que la question soit totalement
> dépourvue d'intérêt, et ta curiosité est légitime, mais par ailleurs, on
> est là quelque peu dans les détails d'implémentation, et je n'ai
> moi-même jamais eu à me soucier de ces détails depuis que j'utilise
> Python (sachant que mes premiers contacts avec la bête remonte quand
> même à quelque part entre fin 1999 et fin 2000).
>
> Maintenant, si ton niveau en anglais est à peu près correct, tu peux
> toujours aller poser la question sur c.l.py où rodent quelques membre du
> dev-team. Ils seront certainement les plus à même de t'éclairer sur ces
> points. Moi à ce stade, je déclare forfait !-)


Moi aussi, je vais déclarer forfait à ce stade. Merci encore pour ton
aide. :-)

En parlant de niveau d'anglais, je voulais savoir s'il existait une
traduction française du "Python Reference Manual" de Guido van Rossum.
La dernière version datant du 21 février 2008, mais même s'il existe une
traduction plus ancienne, j'en serais pleinement satisfait.

J'ai du voir quelque part une traduction du "Python Tutorial" de Guido
van Rossum, mais pas du "Python Reference Manual". Je me demandais si ça
existait...


Merci encore.


--
François

Bruno Desthuilliers

unread,
Apr 21, 2008, 5:56:27 AM4/21/08
to
Francois a écrit :

> Bruno Desthuilliers a écrit :
>>
>> Heu... Comment dire... Ce n'est pas que la question soit totalement
>> dépourvue d'intérêt, et ta curiosité est légitime, mais par ailleurs,
>> on est là quelque peu dans les détails d'implémentation, et je n'ai
>> moi-même jamais eu à me soucier de ces détails depuis que j'utilise
>> Python (sachant que mes premiers contacts avec la bête remonte quand
>> même à quelque part entre fin 1999 et fin 2000).
>>
>> Maintenant, si ton niveau en anglais est à peu près correct, tu peux
>> toujours aller poser la question sur c.l.py où rodent quelques membre
>> du dev-team. Ils seront certainement les plus à même de t'éclairer sur
>> ces points. Moi à ce stade, je déclare forfait !-)
>
>
> Moi aussi, je vais déclarer forfait à ce stade. Merci encore pour ton
> aide. :-)

Sur ce coup, y a vraiment pas de quoi.

> En parlant de niveau d'anglais, je voulais savoir s'il existait une
> traduction française du "Python Reference Manual" de Guido van Rossum.
> La dernière version datant du 21 février 2008, mais même s'il existe une
> traduction plus ancienne, j'en serais pleinement satisfait.
>
> J'ai du voir quelque part une traduction du "Python Tutorial" de Guido
> van Rossum, mais pas du "Python Reference Manual". Je me demandais si ça
> existait...

Y avait eu un effort dans ce sens il y a quelques temps (une paire
d'années SJMSB), mais je ne sais pas où ça en est. De toutes façons,
trad ou pats trad, l'informatique, si tu lis pas l'anglais technique,
t'es dans la m...

Francois

unread,
Apr 21, 2008, 6:24:25 AM4/21/08
to
Bruno Desthuilliers a écrit :

> De toutes façons, trad ou pats trad, l'informatique, si tu lis pas l'anglais technique,
> t'es dans la m...

Oui tu as tout à fait raison, et je m'en veux tellement d'avoir négligé
l'anglais dans ma scolarité...


--
François

Pierre Maurette

unread,
Apr 21, 2008, 10:56:45 AM4/21/08
to

Pôvreu kon...

--
Pierre Maurette


Francois

unread,
Apr 21, 2008, 11:25:58 AM4/21/08
to
Pierre Maurette a écrit :

>> Oui tu as tout à fait raison, et je m'en veux tellement d'avoir
>> négligé l'anglais dans ma scolarité...
>
> Pôvreu kon...

Je ne comprends pas cette insulte ?


--
François

Pierre Maurette

unread,
Apr 21, 2008, 11:34:44 AM4/21/08
to
Francois, le 21/04/2008 a écrit :

Dont acte...

--
Pierre Maurette


Francois

unread,
Apr 21, 2008, 11:43:06 AM4/21/08
to
Pierre Maurette a écrit :

>>> Pôvreu kon...
>>
>> Je ne comprends pas cette insulte ?
>
> Dont acte...

Franchement, je vois pas trop à quoi vous jouez exactement et je ne vais
pas chercher à le savoir. Je suis simplement navré qu'on puisse manquer
de courtoisie à ce point.


--
François

Pierre Maurette

unread,
Apr 21, 2008, 11:53:22 AM4/21/08
to
Francois, le 21/04/2008 a écrit :

Votre fausse candeur me casse les couilles. En C comme en Python...
Un langage est un outil, pas un truc pour se branler.

--
Pierre Maurette


Méta-MCI (MVP)

unread,
Apr 21, 2008, 12:44:03 PM4/21/08
to
Hé, on n'est pas vendredi...

@+

Michel Claveau


Pierre Maurette

unread,
Apr 21, 2008, 1:18:19 PM4/21/08
to
Méta-MCI (MVP), le 21/04/2008 a écrit :
> Hé, on n'est pas vendredi...

Ou les limbes du Pacifique.
On n'a quand même pas mérité ça, non ?

--
Pierre Maurette


bruno.des...@gmail.com

unread,
Apr 21, 2008, 3:15:59 PM4/21/08
to

Heu... Pierre, tu pêtes un cable ?

Francois

unread,
Apr 21, 2008, 5:20:30 PM4/21/08
to
bruno.des...@gmail.com a écrit :

Bah. C'est pas grave, c'est oublié. Allez, comme je suis bonne pâte, je
laisse même une petite chanson en cadeau. :-)

http://video.google.fr/videoplay?docid=-8209582238085709464&q=%22ma+gueule%22+johnny&total=83&start=10&num=10&so=0&type=search&plindex=0&hl=fr


--
François

NicolasP

unread,
Apr 24, 2008, 3:30:47 AM4/24/08
to
> Maintenant, si ton niveau en anglais est à peu près correct, tu peux
> toujours aller poser la question sur c.l.py où rodent quelques membre du
> dev-team. Ils seront certainement les plus à même de t'éclairer sur ces
> points. Moi à ce stade, je déclare forfait !-)

C'est expliqué dans le livre "Python en concentré" disponible ici :
http://www.amazon.fr/Python-en-concentr%C3%A9-Alex-Martelli/dp/284177452X/ref=sr_1_9?ie=UTF8&s=books&qid=1209021625&sr=8-9

Ca se passe dans le chapitre traitant de import & co.

J'ai pas le livre avec moi alors je peux pas maintenant, mais je pourrais toujours relire et faire une synthèse si ça t'intéresse.

Nicolas

Francois

unread,
Apr 24, 2008, 3:05:02 PM4/24/08
to
NicolasP a écrit :

Merci pour la réponse. :-)

Oui ça m'intéresserait bien si cette corvée ne te pèse pas trop. Il n'y
a vraiment pas d'obligation et encore moins d'urgence.

Au passage, le livre dont tu parles est-il de bonne qualité ? J'ai
hésité à l'acheter il y a quelques jours.


--
François

NicolasP

unread,
Apr 28, 2008, 4:00:25 AM4/28/08
to
>
> Oui ça m'intéresserait bien si cette corvée ne te pèse pas trop. Il n'y
> a vraiment pas d'obligation et encore moins d'urgence.

C'est par là (trop long à recopier à la main et Google l'a déjà fait) :
http://books.google.fr/books?id=_3MCi1uRmvAC&pg=PA119&lpg=PA119&dq=%22python+offre+plusieurs+objets+pr%C3%A9d%C3%A9finis%22&source=web&ots=ksBkWkDyDv&sig=05J6HIjq0eHcJQp05QArySF9tOo&hl=fr#PPA119,M1

>
> Au passage, le livre dont tu parles est-il de bonne qualité ? J'ai
> hésité à l'acheter il y a quelques jours.
>

Perso, j'en ai qu'un et c'est celui là. Même s'il date un peu (il ne couvre pas les dernières versions de Python),
je le trouve très bien pour apprendre le langage et découvrir une bonne partie de la bibliothèque standard.
Attention, c'est un manuel de référence. De courts extraits de codes sont donnés mais ne cherche pas d'exemples
tout cuits d'applications.

Nicolas

Francois

unread,
Apr 28, 2008, 8:44:34 AM4/28/08
to
NicolasP a écrit :

Parfait ! Merci beaucoup. :-)


--
François

0 new messages