if not e in l ou if e not in l ?
Bonjour,
Question perte de temps:
ou ?
@+
Explicit is better than implicit
Bonjour,
Citation:
Envoyé par
dividee
c'est plus lisible
Il me semble que c'est une grande partie de la réponse, l'interprétation du code par Python n'ayant rien a faire de mes états d’âme et l'opérateur not in étant interprété de la même façon (valable aussi pour la comparaison d'identité is not).
Le code étant le même toute considération de performance n'as lieu d’être ici, si ce n'est le fait de devoir ou pas parcourir la collection au complet, soit utiliser in ou pas.
Une autre considération est de savoir s'il est utile ou pas de construire la collection si celle ci n'existe pas.
Code:
1 2 3 4 5 6 7 8
| >>> a = 0
>>> b = 1
>>> False in (a, b)
True
>>> False not in (a, b)
False
>>> a and b
0 |
(or considération not a and a is not None)
Je pense que cela sera justifié, au final, par Simple is better than complex (on en reviens à la lecture).
Pour moi if not doit être utiliser pour le True/False implicite (if not foo) et not in pour "l'appartenance" (in). Cela reviens a
Citation:
Envoyé par
dividee
je n'arrive jamais à retenir la priorité des opérateurs, et je suis trop fainéant pour vérifier ou pour mettre des parenthèses
C'est explicite pour le lecteur (on a notre import this ;)).
Citation:
Envoyé par
PauseKawa
Pour ma part je pense que la forme if not <condition> est bien plus proche de l'esprit du langage.
Reste donc vrais dans le cadre booléen mais sa lecture n'est pas équivalente à not in qui implique l'appartenance ou pas.
Citation:
Envoyé par
afranck64
le
me parait plus mathématiques :mouarf:, tandis que le
me semble linguistique, il est parfait pour des littéraires qui se mettent à coder :aie:
Je pense que c'est une erreur.
Le coding style Python dit que if a est préférable à if a != None et en bon pythons on applique cela à tour de bras sans prendre en compte le contexte / la lisibilité du code (Readability counts).
En fait ce qui nous parait plus 'mathématique' dans ce cas c'est le booléen implicite, on en oubli le contexte.
De plus l'interprétation de code retrouvant l'opérateur not in dans tous les cas autant l'utiliser directement.
Après cela qu'importe si cela ressemble à du shakespeare si c'est compréhensible/le message passe pour le lecteur/Python ?
Citation:
Envoyé par
PsycoPy
La première forme reste claire et correspond plus à ce qui peut se faire dans d'autres langages. À condition de bien comprendre l'ordre dans lequel Python va traduire l'instruction
Il la comprendras tel que vous lui présenterez, l'erreur venant du programmeur.
Code:
1 2 3 4 5 6 7
| >>> l = (0, 1, 2)
>>> not (0 in l)
False
>>> (not 0) in l
True
>>> (not 5) in l
True |
La priorité des opérateurs de dividee ne pouvant pas s'appliquer à not in celui ci est préférable.
@+