Как "тестировать" NoneType в python?

У меня есть метод, который иногда возвращает значение NoneType. Итак, как я могу подвергнуть сомнению переменную, которая не является типом? Мне нужно использовать Если метод, например

if not new:
    new = '#'

5 ответов


Итак, как я могу задать вопрос переменной, которая не является типом?

использовать is оператор, такой

if variable is None:

почему это работает?

С None является единственным синглетным объектом NoneType в Python, мы можем использовать is оператор, чтобы проверить, имеет ли переменная None в нем или нет.

цитирую is docs,

операторы is и


if variable is None:
   print 'Is None'

--

if variable is not None:
   print 'Isn\'t None'

это также можно сделать с 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))

Python 2.7:

x = None
isinstance(x, type(None))

или

isinstance(None, type(None))

== > True