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 :
################################################
>>> __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