2017-07-11 3 views

Répondre

7

Vous testez différentes choses ici.

Le if vérifie simplement si le bool de l'expression (voir aussi "Truth value testing") est True pas si l'identité est égale à True.

Donc ce qui est réellement testé par le if est:

>>> bool(5) == True 
True 
+0

Alors Python jette implicitement des nombres et des chaînes aux booléens dans de tels cas? – Petar

+0

Eh bien, le 'if' (mais aussi' and', 'or',' while', etc.) nécessite une "valeur de vérité" donc ce n'est pas vraiment implicite. – MSeifert

0

vrai a valeur 1. Si vous définissez True = 5 (uniquement en python 2) l'égalité devient vrai. L'instruction 'if' est comme si elle vérifiait si la garde n'est pas 0 ou None, donc tous les nombres non 0 sont autorisés à entrer dans le premier bloc. En fait False a la valeur 0.