python-3.x - 带有 isalpha() 的波浪号 TRUE 返回 -2 而不是 FALSE
问题描述
玩弄isalpha()
,我注意到一些奇怪的行为。
"a".isalpha()
>>True
"2".isalpha()
>> False
上面的两个语句返回了我期望的结果。但是,现在在之前添加波浪号就没那么有意义了。
~"a".isalpha()
>> -2
~"2".isalpha()
>> -1
为什么会这样?我发现使用not
而不是~
返回我期望的输出,但对上述行为感兴趣。
not "a".isalpha()
>> False
not "2".isalpha()
>> True
解决方案
从关于按位运算符的python文档(强调我的):
~ x
:返回 x 的补码 - 通过将每个 1 转换为 0 和将每个 0 转换为 1 得到的数字。这与 -x - 1 相同。
由于在 python 中True == 1
和False == 0
,~True == -1 - 1 == -2
和~False == -0 - 1 == -1
.
正如您所发现的,要执行您想做的事情(逻辑逆),您需要使用not
运算符。
推荐阅读
- php - 选择mysql中的前5名卖家
- css - 如何在 div 的底部强制显示更多文本?
- mysql - 在mysql中用零替换空值
- java - 如何读取无符号的 Java 并将其值存储在 BigInteger 中?
- visual-studio - 在不关闭 VS 的情况下编辑 Winforms 中使用的图像
- node.js - Node.JS 应用程序出现 ERR_SERVER_ALREADY_LISTENING 错误,但仅适用于 10.2.1?
- node.js - 本地主机上端口 4200 上的 Web 浏览器中的节点服务器不可见
- java - 将数据绑定到 RequestBody(415 错误)
- google-cloud-platform - 在 ns1 和 ns2 中使用两个 ips 谷歌云平台创建一个 vm na
- node.js - Node.js 和 express : 路由