Comparison to singleton
None
should be expr is None
94 or_(
95 Speaker.icon_image_url == None, # noqa: E711
96 Speaker.small_image_url == None,
97 Speaker.thumbnail_image_url == None, 98 ),
99 ).all()
100
Comparison to singleton
None
should be expr is None
93 Speaker.photo_url.isnot(None),
94 or_(
95 Speaker.icon_image_url == None, # noqa: E711
96 Speaker.small_image_url == None, 97 Speaker.thumbnail_image_url == None,
98 ),
99 ).all()
Comparison to singleton
None
should be expr is None
81 or_(
82 Event.thumbnail_image_url == None, # noqa: E711
83 Event.large_image_url == None,
84 Event.icon_image_url == None, 85 ),
86 ).all()
87 logger.info('Resizing images of %s events...', len(events))
Comparison to singleton
None
should be expr is None
80 Event.original_image_url.isnot(None),
81 or_(
82 Event.thumbnail_image_url == None, # noqa: E711
83 Event.large_image_url == None, 84 Event.icon_image_url == None,
85 ),
86 ).all()
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.