带有 isalpha() 的波浪号 TRUE 返回 -2 而不是 FALSE

OD1*_*995 2 python-3.x isalpha

玩弄isalpha(),我注意到了一些奇怪的行为。

"a".isalpha()
>>True
"2".isalpha()
>> False
Run Code Online (Sandbox Code Playgroud)

上面的两个语句返回了我期望的结果。但是,现在之前添加波浪号就没有意义了。

~"a".isalpha()
>> -2
~"2".isalpha()
>> -1
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?我发现使用not而不是~返回我期望的输出,但我对上述行为感兴趣。

not "a".isalpha()
>> False
not "2".isalpha()
>> True
Run Code Online (Sandbox Code Playgroud)

gli*_*dud 5

从关于按位运算符的python 文档(重点是我的):

~ x:返回 x 的补码 - 通过将每个 1 转换为 0 并将每个 0 转换为 1 得到的数字。这与 -x - 1 相同。

由于在 pythonTrue == 1False == 0,~True == -1 - 1 == -2~False == -0 - 1 == -1.

正如您所发现的,要执行您想做的事情(逻辑逆),您需要使用not运算符。