我惊讶地发现布尔值乘以整数的结果取决于布尔值是否是文字。一个罕见的陷阱?它确实吸引了我。
奖励积分:这个记录在哪里?
Python 3.8.10 (default, Nov 22 2023, 10:22:35)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> zz = 0
>>> not(zz)
True
>>> not(zz)*4
True
>>> True*4
4
not
不是函数。它是一个运算符,其优先级低于 *
。所以
not (zz) * 4
被评价为
not (zz * 4)
zz * 4
是 0
,然后 not
将其转换为布尔值并返回反转,即 True
。
要获得您所期望的结果,请使用
(not zz) * 4