Pensez-y. query
sera toujours être pas égal à deux ou "Sleep"
"Binlog Dump"
- il ne peut jamais être égale à deux d'entre eux - et une expression or
est vrai si soit de ses arguments est vrai. Donc, votre condition sera toujours vraie! Ce que vous voulez est:
if not (query == "Sleep" or query == "Binlog Dump"):
Avec une algèbre booléenne appliquée, cela est logiquement équivalent à ce qui suit:
if query != "Sleep" and query != "Binlog Dump":
Mais la première est plus facile à lire, car il exprime votre intention plus clairement: si le requête n'est pas l'un de ces deux termes.
Cette condition peut aussi être écrit clairement:
if query not in ("Sleep", "Binlog Dump"):
Cela a l'avantage d'être facilement étendu à des conditions supplémentaires en cas de besoin, et il est aussi sans doute encore plus lisible que le premier exemple. En outre, vous n'avez pas besoin de répéter le nom de la variable que vous testez.
Votre titre indique "ET OU". Avez-vous essayé votre expression avec 'and' au lieu de' ou'? –
parce que je pense que peut-être j'ai besoin d'utiliser "et" afin de résoudre le problème ... probablement je me trompe ... – user1110801
Non, vous avez raison, vous avez besoin de 'et '- alors pourquoi pensez-vous que vous avez besoin? '? –