Tilde TRUE с isalpha () возвращает -2 не FALSE - PullRequest
0 голосов
/ 27 сентября 2018

Играя с isalpha(), я заметил странное поведение.

"a".isalpha()
>>True
"2".isalpha()
>> False

Два приведенных выше утверждения возвращают то, что я ожидал от них.Однако теперь добавление тильды раньше не имеет смысла.

~"a".isalpha()
>> -2
~"2".isalpha()
>> -1

Почему это происходит?Я обнаружил, что использование not вместо ~ возвращает результат, который я ожидал, но меня интересует поведение выше.

not "a".isalpha()
>> False
not "2".isalpha()
>> True

1 Ответ

0 голосов
/ 27 сентября 2018

Из документации Python по побитовым операторам (выделено мной):

~ x: Возвращает дополнение к x - число, которое вы получаете, переключая каждый 1 для0 и каждый 0 для 1. Это то же самое, что и -x - 1.

Так как в python True == 1 и False == 0, ~True == -1 - 1 == -2 и ~False == -0 - 1 == -1.

Как вы обнаружили, чтобы делать то, что вы хотите сделать (логическое обратное), вам нужно использовать оператор not.

...