В Python у вас есть синглтон None, который действует довольно странно в определенных обстоятельствах:
>>> a = None
>>> type(a)
<type 'NoneType'>
>>> isinstance(a,None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types
Итак, <type 'NoneType'> показывает, что None не является типом, но это NoneType. Однако, когда вы запускаете isinstance(a,NoneType), он отвечает на ошибку: NameError: name 'NoneType' is not defined
Теперь, учитывая это, если у вас есть функция с введенным значением по умолчанию, установленным на None, и вам нужно проверить, вы бы сделали следующее:
if variable is None:
#do something
else:
#do something
В чем причина, по которой я не могу сделать следующее:
if isinstance(variable,None): #or NoneType
#do something
else:
#do something
Я просто ищу подробное объяснение, чтобы лучше понять это.
Изменить: хорошее приложение
Скажем, я хотел использовать isinstance, чтобы я мог что-то сделать, если variable - это множество типов, включая None:
if isinstance(variable,(None,str,float)):
#do something