Quelle est l'utilisation de l'opérateur tilde en Python?
Une chose à laquelle je peux penser est de faire quelque chose des deux côtés d'une chaîne ou d'une liste, comme vérifier si une chaîne est palindromique ou non:
def is_palindromic(s):
return all(s[i] == s[~i] for i in range(len(s) / 2))
Tout autre bon usage?
-False==0
) C'est déroutant, puisque vous parliez de la ~
, et ~False == -1
ce n'est pas faux.
__neg__
). J'aurais probablement dû continuer à utiliser True
, par exemple -True == -1
, ce qui n'est ni -2 ni False
faux, ce qui le relie plus clairement au ~True
résultat et aussi que la négation arithmétique de a bool
est différente de sa négation logique. Je n'essayais pas d'être profond. Je mettais juste en évidence 3 opérations et les méthodes spéciales sous-jacentes qui se confondent parfois.
~
implémenté par la méthode spéciale__invert__
n'est pas lié à l'not
opérateur, ce qui annule logiquement la valeur retournée par__bool__
(ou__nonzero__
dans 2.x). Il n'est pas non plus lié à l'-
opérateur de négation unaire, implémenté par__neg__
. Par exemple~True == -2
, ce qui n'est pasFalse
ou faux, et-False == 0
ce qui est toujours faux.