Comparison to singleton
None
should be expr is None
79 )
80 max = (
81 db.session.query(func.sum(Ticket.quantity.label('sum')))
82 .filter(Ticket.event_id == obj_id, Ticket.deleted_at == None) 83 .scalar()
84 )
85 result = {
Description
Comparisons to the singleton objects, like True
, False
, and None
, should be done with identity, not equality. Use is
or is not
.
Identity checks are faster than equality checks.
Also, the equality checks can result in unintended behaviour in some cases:
>>> 1 is True
False
>>> 1 == True
True
>>> 1.0 is True
False
>>> 1.0 == True
True
Bad practice
value = fx()
if value == True: # `==` can cause unintended behaviour
print(value)
if value != None:
print(value)
Recommended
value = fx()
if value is True: # `is` for Identity comparison
print(value)
if value is not None:
print(value)
Exceptions:
Equality comparisons might be required in some cases, especially in SQLAlchemy, SQLObject, ORMs, etc. In these cases, it is safe to ignore this issue.