在Python中添加布尔表达式时,似乎将它们括在括号中会将它们转换为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
伪装的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)