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
__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,'rn',help(i)
@+
Michel Claveau
Francois
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
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 ?
__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.desthuilliers
On 20 avr, 13:28, Francois wrote:
Bonjour !
__builtin__ est à l'intérieur de Python. Dans le noyau, comme une a mande.
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é d ans le noyau Python et que c'est préchargé automatiquement à chaque scri pt, 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.
On 20 avr, 13:28, Francois <mathsatta...@free.fr> wrote:
Bonjour !
__builtin__ est à l'intérieur de Python. Dans le noyau, comme une a mande.
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é d ans
le noyau Python et que c'est préchargé automatiquement à chaque scri pt,
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.
__builtin__ est à l'intérieur de Python. Dans le noyau, comme une a mande.
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é d ans le noyau Python et que c'est préchargé automatiquement à chaque scri pt, 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
Merci pour la réponse, j'ai quelques remarques.
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
Merci pour la réponse, j'ai quelques remarques.
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é ?
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
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):
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
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):
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__"
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):
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.desthuilliers
On 20 avr, 17:43, Francois wrote:
Merci pour la réponse, j'ai quelques remarques.
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 s cript, non ? En quoi est-ce un module alors ?
En ce que ça ne fait pas partie du langage à proprement parler, et e n 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 __built in__ 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 char gé ?
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 !-)
On 20 avr, 17:43, Francois <mathsatta...@free.fr> wrote:
Merci pour la réponse, j'ai quelques remarques.
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 s cript,
non ? En quoi est-ce un module alors ?
En ce que ça ne fait pas partie du langage à proprement parler, et e n
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 __built in__
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 char gé ?
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 !-)
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 s cript, non ? En quoi est-ce un module alors ?
En ce que ça ne fait pas partie du langage à proprement parler, et e n 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 __built in__ 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 char gé ?
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
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
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."
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
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
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 !-)
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
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
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.