if user.item.purchase.status == True:
...使用 flake8 检查时产生错误:
E712 与 True 的比较应该是 'if cond is True:' 或 'if cond:'
status
具有三个有效值:Undefined、True 和 False。
如果
status
是一个 boolean,那么写 expr == True
就很奇怪了,因为 True == True
是 True
,而 False == True
是 False
,我们可以简单地写成 expr
来代替。
另一方面,如果
status
本身不是 布尔,则比较将尝试检查对象 值是否等于 到 True
,这可能不同,但通常是这样某些对象等于 True
或 False
是“奇怪的”。例如 1 == True
成立,但是 1
和 True
是 不同 对象。
如果
status
可以是非布尔值,并且您想检查状态是否为 really True
(因此不是 value 相等,而是 reference 相等),则 is
可以使用
检查,因为 exp1 is exp2
检查两个变量是否引用 相同 对象。
但是,如果您编写一个表达式作为条件,例如
if expr
,那么 Python 会评估该表达式的 truthiness。例如,非空列表的真实性是 True
,而对于空集合,通常是 False
。由于 True
和 False
的真实性分别是 True
和 False
,因此在这种情况下不需要写 == True
。
我认为这里的
status
可能是一个BooleanField
,所以在这种情况下你可以写:
if user.item.purchase.status:
# ...
pass
错误消息提示您使用此语法。
if user.item.purchase.status:
#Do Stuff
你不需要提及
== True
В своем случае я сделал так:
default_path: bool = True
присваиваем тип bool。 Далее в блоке 'if' идет проверка if default_path is True:
和 PEP8 больше не ругается.