Jus*_*ill 6 python if-statement flake8
if user.item.purchase.status == True:
Run Code Online (Sandbox Code Playgroud)
...使用 flake8 检查时产生错误:
E712 与 True 的比较应该是“if cond is True:”或“if cond:”
status
具有三个有效值:未定义、True 和 False。
如果 isstatus
是一个布尔值,那么写起来就会很奇怪expr == True
,因为True == True
isTrue
和False == True
is False
,我们可以简单地写expr
出来。
另一方面,如果某个对象本身status
不是boolean,那么比较将尝试检查对象值是否等于,这可能不同,但通常某些对象等于或是“奇怪的” 。例如,持有,但和是不同的对象。True
True
False
1 == True
1
True
如果status
是非布尔值,并且您想检查状态是否确实 True
(因此不是值相等,而是引用相等),则is
可以使用检查,因为exp1 is exp2
检查两个变量是否引用相同目的。
然而,如果您编写一个表达式作为条件,例如if expr
,则 Python 会评估该表达式的真实性。例如,非空列表的真实性是True
,而对于空集合,它通常是False
。True
由于和的真实性分别False
是True
和False
,因此在这种情况下不需要写== True
。
我认为这status
可能是 a BooleanField
,所以在这种情况下你可以写:
if user.item.purchase.status:
# ...
pass
Run Code Online (Sandbox Code Playgroud)