Как "проверить" NoneType в python?
У меня есть метод, который иногда возвращает значение NoneType. Итак, как я могу задать вопрос переменной, которая не является типом? Мне нужно использовать Если метод, например
if not new:
new = '#'
Я знаю, что это неправильный путь и я надеюсь, вы понимаете, что я имел в виду.
5 ответов:
Итак, как я могу задать вопрос переменной, которая не является типом?
использовать
is
оператор, такойif variable is None:
почему это работает?
С
None
является единственным одноэлементным объектомNoneType
в Python, мы можем использоватьis
оператор для проверки наличия переменнойNone
в нем или нет.цитирую
is
docs,операторы
is
иis not
тест на идентичность объекта:x is y
true если и только еслиx
иy
это один и тот же объект.x is not y
дает обратное значение ИСТИНА.так как может быть только один экземпляр
None
,is
было бы предпочтительным способом проверитьNone
.
услышать это из первых уст
цитирую руководство по стилю кодирования Python - PEP-008 (совместно определяется самим Гвидо),
сравнения с синглетами, как
None
всегда должно быть сделано сis
илиis not
,никогда операторы равенства.
это также можно сделать с
isinstance
по состоянию на ответ Алекса Холла:>>> NoneType = type(None) >>> x = None >>> type(x) == NoneType True >>> isinstance(x, NoneType) True
isinstance
также интуитивно понятен, но есть осложнение, что он требует линии
NoneType = type(None)
который не нужен для таких типов, как
int
иfloat
.
самый простой способ, однако, без дополнительной строки в дополнение к ответ кардамона вероятно:
isinstance(x, type(None))
Итак, как я могу задать вопрос переменной, которая не является типом? Мне нужно использовать метод if
используя
isinstance()
не требуетсяis
внутриif
-заявлении:if isinstance(x, type(None)): #do stuff
дополнительная информация
Вы также можете проверить наличие нескольких типов в одномisinstance()
заявление, как указано в документация. Просто напишите типы как кортеж.isinstance(x, (type(None), bytes))