На чисто техническом уровне мы можем объяснить то, что вы видите, взглянув на источник
Соответствующий фрагмент будет
@set_module('numpy')
class finfo(object):
<--snip-->
def __new__(cls, dtype):
try:
dtype = numeric.dtype(dtype)
except TypeError:
# In case a float instance was given
dtype = numeric.dtype(type(dtype))
Поведение, которое вы видитеявляется следствием np.dtype(None)
оценки до dtype('float64')
, что само по себе не кажется мне на 100% естественным. Другие (включая разработчиков), похоже, согласны . Например,
О, хорошо, мы могли бы отказаться от dtype (None), который кажется довольно бесполезным, но я не знаю, стоит ли это беспокоить ...
Исходя из этого обсуждения и приведенного выше кода, способ обработки None
действительно выглядит немного непреднамеренно, но это только мое обоснованное предположение.