Checking if a variable or parameter is None
should only be done when you expect that it can be None
. Doing so when the
variable is always None or never None is confusing at best. At worse, there is a bug and the variable is not updated properly.
This rule raises an issue when expressions X is None
, X is not None
, X == None
or X != None
are
constant, i.e. X
is always None or never None.
Noncompliant Code Example
mynone = None
result = mynone is None: # Noncompliant. Always True.
if mynone == None: # Noncompliant. Always True.
pass
if mynone is not None: # Noncompliant. Always False.
pass
if mynone == None: # Noncompliant. Always False.
pass
myint = 42
result = myint is None: # Noncompliant. Always False.
if myint == None: # Noncompliant. Always False.
pass
if myint is not None: # Noncompliant. Always True.
pass
if myint == None: # Noncompliant. Always True.
pass
See