Python a ces deux (entre autres) builtin objets. Ils sont juste des objets; au début, ils n'ont pas de noms, mais de savoir ce que nous appelons, appelons - 0x600D
et 0xBAD
.
Avant de commencer à exécuter un Python (2.x) script, le nom de l' True
obtient lié à l'objet 0x600D
, et le nom de l' False
obtient lié à l'objet 0xBAD
, de sorte que lorsque le programme se réfère à l' True
, il regarde 0x600D
.
Parce qu' 0x600D
et 0xBAD
savent qu'ils sont généralement utilisés par les noms True
et False
, c'est ce qu'ils sortie lorsqu'ils sont imprimés, à savoir l' __str__
méthode de 0x600D
retours 'True'
et ainsi de suite.
True = False
lie aujourd'hui le nom d' True
à un autre objet. À partir de maintenant, les deux noms True
et False
font référence au même objet 0xBAD
, ce qui, une fois imprimées, les sorties False
.
True = True
ne pas vraiment faire quelque chose: Il faut de l'objet référencé par le nom de l' True
, et lie les nouveaux (et anciens) nom True
de cet objet. Depuis (en raison de l'étape précédente) True
désigne 0xBAD
avant cela, il fait toujours référence à l' 0xBAD
après ce. Par conséquent, l'impression encore sorties False
.
True = not True
d'abord l'objet que le nom de l' True
est lié à, qui est - 0xBAD
. Il donne à cet objet à l' not
de l'opérateur. not
n'a pas de soins (ou de savoir) ce nom est utilisé ici pour désigner 0xBAD
, il sait juste que lorsqu' 0xBAD
il devrait revenir en 0x600D
. Cette valeur de retour est alors donné à l'opérateur d'assignation =
, contraignant le nom True
de cet objet.
Depuis le nom True
maintenant une fois de plus fait référence à l'objet 0x600D
, appelant print True
sorties True
, et le monde est bon à nouveau.