布尔乘以整数 - 有人愿意解释这个陷阱吗?

问题描述 投票:0回答:1

我惊讶地发现布尔值乘以整数的结果取决于布尔值是否是文字。一个罕见的陷阱?它确实吸引了我。

奖励积分:这个记录在哪里?

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
python boolean
1个回答
0
投票

not
不是函数。它是一个运算符,其优先级低于
*
。所以

not (zz) * 4

被评价为

not (zz * 4)

zz * 4
0
,然后
not
将其转换为布尔值并返回反转,即
True

要获得您所期望的结果,请使用

(not zz) * 4
© www.soinside.com 2019 - 2024. All rights reserved.