python - 为什么 (0>1 + 0>9) 返回 False,而 ((0>1) + (0>9)) 返回 0?

标签 python python-2.7 python-3.x

在Python中添加 bool 表达式时,似乎将它们括在括号中会将它们转换为int,但不这样做会保留它们的类型:

>>> ((0>1) + (0>9))
0
>>> (0>1 + 0>9)
False
>>> (0>1 + (0>9))
False

这是为什么呢?在我看来,括号只能用于更改操作顺序(除了某些使用括号定义元组的情况),而不是内容的类型,所以我期望:

(<expression>) == <expression>

最佳答案

>>> ((0>1) + (0>9)) 
0

这是整数加法,因为 False 是一个整数实例。 bool 没有定义加法,因此 False + False 在父类 int.__add__ 上解析。

>>> (0>1 + 0>9)
False

这是一个链式比较,它是伪装的 0 > 1 > 9

>>> (0>1 + (0>9))
False

这是一个常规比较,它是伪装的 0 > 1 + False

关于python - 为什么 (0>1 + 0>9) 返回 False,而 ((0>1) + (0>9)) 返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45517855/

相关文章:

python - 如何从 Python 中的数字获取语言环境格式的工作日名称?

python - 如何将 Pandas 系列插入现有 Excel 文件的特定列(而不删除该文件中的内容)?

python - 除了 locals() 字典之外的函数内变量的信息

Python if 条件简化

python - Django 中的分组依据?

python - 将 JSON 变量输入到 python -mjson.tool

python - 检查缓存是否过时的算法

Python 就地更改变量

python - Pandas 不为空,但获取max()arg为空序列

python - 如何计算两个包含 Python 字符串的列表的 Jaccard 相似度?