A che serve l'operatore tilde in Python?
Una cosa a cui posso pensare è fare qualcosa su entrambi i lati di una stringa o di un elenco, ad esempio verificare se una stringa è palindromica o meno:
def is_palindromic(s):
return all(s[i] == s[~i] for i in range(len(s) / 2))
Qualche altro buon utilizzo?
-False==0
) È confuso, dal momento che stavi parlando del ~
, e ~False == -1
che non è falso.
__neg__
). Probabilmente avrei dovuto continuare ad usare True
, ad esempio -True == -1
, che non è -2 o False
o falso, il che lo collega più chiaramente al ~True
risultato e anche che la negazione aritmetica di a bool
è diversa dalla sua negazione logica. Non stavo cercando di essere profondo. Stavo solo mettendo in evidenza 3 operazioni e i metodi speciali sottostanti che a volte vengono confusi.
~
implementato con il metodo speciale__invert__
non è correlatonot
all'operatore, il che nega logicamente il valore restituito da__bool__
(o__nonzero__
in 2.x). Non è inoltre correlato-
all'operatore di negazione unaria, implementato da__neg__
. Ad esempio~True == -2
, che non èFalse
o falso e-False == 0
che è ancora falso.