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 == TrueisTrue和False == Trueis False,我们可以简单地写expr出来。
另一方面,如果某个对象本身status不是boolean,那么比较将尝试检查对象值是否等于,这可能不同,但通常某些对象等于或是“奇怪的” 。例如,持有,但和是不同的对象。TrueTrueFalse1 == True1True
如果status是非布尔值,并且您想检查状态是否确实 True(因此不是值相等,而是引用相等),则is可以使用检查,因为exp1 is exp2检查两个变量是否引用相同目的。
然而,如果您编写一个表达式作为条件,例如if expr,则 Python 会评估该表达式的真实性。例如,非空列表的真实性是True,而对于空集合,它通常是False。True由于和的真实性分别False是True和False,因此在这种情况下不需要写== True。
我认为这status可能是 a BooleanField,所以在这种情况下你可以写:
if user.item.purchase.status:
# ...
passRun Code Online (Sandbox Code Playgroud)