Как "проверить" NoneType в python?
У меня есть метод, который иногда возвращает значение NoneType. Итак, как я могу задать вопрос переменной, которая не является типом? Мне нужно использовать Если метод, например
if not new:
new = '#'
Я знаю, что это неправильный путь и я надеюсь, вы понимаете, что я имел в виду.
5 ответов:
Итак, как я могу задать вопрос переменной, которая не является типом?
использовать
isоператор, такойif variable is None:почему это работает?
С
Noneявляется единственным одноэлементным объектомNoneTypeв Python, мы можем использоватьisоператор для проверки наличия переменнойNoneв нем или нет.цитирую
isdocs,операторы
isиis notтест на идентичность объекта:x is ytrue если и только если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))