"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi \"1\" dans \"11" == True est-il évalué à False en Python ?

Pourquoi \"1\" dans \"11" == True est-il évalué à False en Python ?

Publié le 2024-11-13
Parcourir:773

Why Does \

L'énigme de la priorité des opérateurs en Python : percer le mystère de « in » et comparaisons

Le comportement déroutant observé avec l'opérateur « in » de Python et les comparaisons ont laissé beaucoup de personnes perplexes. Mais sous la surface se cache une interaction subtile entre la priorité des opérateurs et le chaînage des expressions.

La priorité des opérateurs détermine l'ordre dans lequel les opérations sont évaluées dans une expression. En Python, les opérateurs « in » et de comparaison (par exemple, « == ») ont la même priorité. Par conséquent, elles sont traitées de gauche à droite.

Cependant, la situation devient plus complexe lorsqu'il s'agit d'expressions chaînées. Un piège courant survient lorsque l'on tente de comparer le résultat d'une opération « in » avec une autre valeur. Prenons l'exemple suivant :

'1' in '11' == True

Étonnamment, cette expression est évaluée comme False. La raison réside dans l'enchaînement de 'in' et '=='. L'expression est effectivement analysée comme :

('1' in '11') and ('11' == True)

L'opérateur 'in' vérifie si '1' est membre de « 11 », ce qui donne True. Cependant, la deuxième comparaison, '11' == True, donne False. Ainsi, l'expression globale est évaluée comme False.

Pour obtenir la valeur True souhaitée, il faut explicitement modifier l'ordre de priorité. Ceci peut être réalisé en utilisant des parenthèses :

('1' in '11') == True

En mettant l'opération 'in' entre parenthèses, l'expression est évaluée dans son scope avant de le comparer avec True. Cette modification aboutit à un résultat True comme prévu.

Comprendre la priorité et le chaînage des opérateurs est crucial pour déchiffrer le comportement des expressions Python complexes. Il permet aux développeurs d'anticiper la séquence des opérations et d'éviter les pièges inattendus.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3