在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/