Какая польза от оператора тильды в Python?
Одна вещь, о которой я могу подумать, это сделать что-то с обеих сторон строки или списка, например, проверить, является ли строка палиндромной или нет:
def is_palindromic(s):
return all(s[i] == s[~i] for i in range(len(s) / 2))
Любое другое хорошее использование?
-False==0
) Это сбивает с толку, так как вы говорили о ~
, и ~False == -1
это не Ложь.
__neg__
). Вероятно, мне следовало бы продолжать использовать True
, например -True == -1
, значение «-2» или « False
ложь», которое более четко связывает его с ~True
результатом, а также то, что арифметическое отрицание a bool
отличается от его логического отрицания. Я не пытался быть глубоким. Я просто выделил 3 операции и основные специальные методы, которые иногда путают.
~
реализованный специальным методом,__invert__
не связан сnot
оператором, который логически сводит на нет значение, возвращаемое__bool__
(или__nonzero__
в 2.x). Это также не связано с-
унарным оператором отрицания, реализованным__neg__
. Например~True == -2
, который не являетсяFalse
или ложным, и-False == 0
, который все еще ложным.