Maison  >  Article  >  développement back-end  >  Pourquoi \'1 in \'11\' == True\' renvoie-t-il une TypeError en Python ?

Pourquoi \'1 in \'11\' == True\' renvoie-t-il une TypeError en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 14:33:291067parcourir

Why Does

Comprendre la priorité des opérateurs en Python : 'in' vs comparaison

En Python, déterminer l'ordre des opérations peut être crucial pour évaluer les expressions correctement. La priorité des opérateurs spécifie leur priorité, les opérateurs de priorité supérieure étant évalués en premier.

Considérez les expressions suivantes :

<code class="python">'1' in '11'
('1' in '11') == True</code>

Les deux expressions sont évaluées à True, indiquant que l'opérateur « in » a une priorité inférieure à celle de l'opérateur de comparaison '=='. Cependant, placer des parenthèses autour de l'expression 'in' modifie l'ordre d'évaluation :

<code class="python">'1' in ('11' == True)</code>

Cette expression génère une TypeError, indiquant que quelque chose ne va pas. Pour comprendre pourquoi, examinons la priorité des opérateurs de Python.

Selon la documentation Python, 'in' et '==' ont la même priorité. Par conséquent, Python les évalue de gauche à droite. Dans ce cas, Python évalue d'abord « 1 » dans « 11 », ce qui donne la valeur True. Cependant, la partie '== True' est ensuite évaluée comme une expression booléenne, conduisant à TypeError puisqu'une valeur booléenne ne peut pas être itérée.

Pour résoudre ce problème, vous pouvez tirer parti du chaînage. Le chaînage permet de regrouper et d'évaluer plusieurs opérateurs ayant la même priorité. En ajoutant des parenthèses comme suit, vous pouvez forcer l'évaluation de l'opérateur « in » en premier :

<code class="python">'1' in '11' == True</code>

Cette expression est évaluée à False, ce qui correspond à vos attentes. Les parenthèses garantissent que l'opérateur « in » est évalué en premier, ce qui donne True. Ceci est ensuite comparé à True dans l'expression '==', ce qui donne False.

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!

Déclaration:
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