Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.lang.python > #3886

Re: Comportement étrange avec IN et OR...

From Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid>
Newsgroups fr.comp.lang.python
Subject Re: Comportement étrange avec IN et OR...
Date 2022-05-26 11:27 +0200
Organization Université de Strasbourg
Message-ID <87ilpsy78b.fsf@universite-de-strasbourg.fr.invalid> (permalink)
References <t6ndp3$1igp$1@gioia.aioe.org>

Show all headers | View raw


Dominique <zzz@aol.com.invalid> writes:

> test='[22118.286892] i915 0000:00:02.0: [drm] *ERROR* AUX C/DDI C
> (TC)/PHY TC1: did not complete or timeout within 10ms (status
> 0xad4003ff)'

> test2=list(test.split(' '))

> '*ERROR*' or 'ERR' in test2

Cela ne signifie pas ce que tu crois. Cette expression est interprétée
comme :

- est-ce que « '*ERROR*' » est vraie ?
- sinon, est-ce que « 'ERR' in test2 » est vraie ?

Techniquement c'est

    ('*ERROR*') or ('ERR' in test2)

L'opérande de gauche ne mentionne même pas test2.

La première condition ('*ERROR*') est toujours vérifiée (parce qu'une
chaîne de caractères est considérée comme vraie dès qu'elle n'est pas
vide). D'autre part "x or y" a la valeur de x si x est vraie, et sinon
la valeur de y : en clair, une valeur brute (comme '*ERROR*') est
convertie en booléen pour tester sa véracité, mais l'expression garde la
valeur non convertie.

(Au passage, c'est une illustration de l'aversion de python pour le
typage. Par exemple le résultat de

    x or "Damned"

où x est un entier, sera soit un entier (si x != 0) soit une chaine de
caractères. Pure perversité.)


Bref : ce que tu veux (probablement) est

    '*ERROR*' in test2 or 'ERR' in test2

Il faut faire deux tests "in", on ne peut pas tester deux valeurs en
même temps avec "in" : ce qui est à gauche de "in" doit être une chaîne
(dans ton cas). Si tu écris :

    ('*ERROR*' or 'ERR') in test2

le "or" est calculé d'abord, et tu testes en substance « '*ERROR*' in
test2 ».

-- Alain.

Back to fr.comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Comportement étrange avec IN et OR... Dominique <zzz@aol.com.invalid> - 2022-05-26 10:29 +0200
  Re: Comportement étrange avec IN et OR... Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2022-05-26 11:27 +0200
    Re: Comportement étrange avec IN et OR... Dominique <zzz@aol.com.invalid> - 2022-05-26 17:26 +0200
      Re: Comportement étrange avec IN et OR... Olivier Miakinen <om+news@miakinen.net> - 2022-05-26 17:52 +0200
        Re: Comportement étrange avec IN et OR... Dominique <zzz@aol.com.invalid> - 2022-05-26 19:01 +0200
  Re: Comportement étrange avec IN et OR... Dominique <zzz@aol.com.invalid> - 2022-05-26 11:36 +0200
  Re: Comportement étrange avec IN et OR... Benoit Izac <use.reply.to@INVALID.ADDRESS> - 2022-05-26 11:38 +0200

csiph-web