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

Mary-Kate Olsen
Libérer: 2024-10-30 09:34:27
original
464 Les gens l'ont consulté

Why Does

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

Le comportement déroutant observé avec l'opérateur « in » de Python et les comparaisons ont laissé beaucoup de gens 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 enchaî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 :

<code class="python">'1' in '11' == True</code>
Copier après la connexion

É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 :

<code class="python">('1' in '11') and ('11' == True)</code>
Copier après la connexion

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 à 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 :

<code class="python">('1' in '11') == True</code>
Copier après la connexion

En mettant l'opération 'in' entre parenthèses, l'expression est évaluée dans sa portée avant de la 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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal