Sim - use math.nan.
>>> from math import nan
>>> print(nan)
nan
>>> print(nan + 2)
nan
>>> nan == nan
False
>>> import math
>>> math.isnan(nan)
True
Antes do Python 3.5, podia-se usar float("nan")(não diferencia maiúsculas de minúsculas).
Observe que verificar se duas coisas que são NaN são iguais uma à outra sempre retornará falso. Isso ocorre em parte porque duas coisas que "não são um número" não podem (estritamente falando) ser iguais uma à outra - consulte Qual é a razão para todas as comparações retornarem falso para valores IEEE754 NaN? para mais detalhes e informações.
Em vez disso, use math.isnan(...)se precisar determinar se um valor é NaN ou não.
Além disso, a semântica exata da ==operação no valor NaN pode causar problemas sutis ao tentar armazenar NaN dentro de tipos de contêiner como listou dict(ou ao usar tipos de contêiner personalizados). Consulte Verificando a presença de NaN em um contêiner para obter mais detalhes.
Você também pode construir números NaN usando o módulo decimal do Python :
>>> from decimal import Decimal
>>> b = Decimal('nan')
>>> print(b)
NaN
>>> print(repr(b))
Decimal('NaN')
>>>
>>> Decimal(float('nan'))
Decimal('NaN')
>>>
>>> import math
>>> math.isnan(b)
True
math.isnan(...) também funcionará com objetos decimais.
No entanto, você não pode construir números NaN no módulo de frações do Python :
>>> from fractions import Fraction
>>> Fraction('nan')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python35\lib\fractions.py", line 146, in __new__
numerator)
ValueError: Invalid literal for Fraction: 'nan'
>>>
>>> Fraction(float('nan'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python35\lib\fractions.py", line 130, in __new__
value = Fraction.from_float(numerator)
File "C:\Python35\lib\fractions.py", line 214, in from_float
raise ValueError("Cannot convert %r to %s." % (f, cls.__name__))
ValueError: Cannot convert nan to Fraction.
Aliás, você também pode fazer float('Inf'), Decimal('Inf')ou math.inf(3.5+) para atribuir um número infinito. (E veja também math.isinf(...))
No entanto, fazer Fraction('Inf')ou Fraction(float('inf'))não é permitido e lançará uma exceção, assim como NaN.
Se você deseja uma maneira rápida e fácil de verificar se um número não é NaN nem infinito, você pode usar a math.isfinite(...)partir do Python 3.2+.
Se você quiser fazer verificações semelhantes com números complexos, o cmathmódulo contém um conjunto de funções e constantes semelhantes ao mathmódulo: