Есть ли разница между if not x и if x is None?


person Wilson Canda    schedule 17.06.2014    source источник


Ответы (1)


not x также вернет True для всего, что оценивается как False в логическом контексте. Некоторые примеры:

>>> x = ()
>>> not x
True
>>> x = []
>>> not x
True
>>> x = ''
>>> not x
True    
>>> x = 0
>>> not x
True    
>>> x is None
False

Поэтому, если ваш код должен действовать иначе, когда x равно None, а не x, являющийся пустым списком, кортежем, строкой, нулем, ... тогда используйте x == None или x is None вместо not x.

person timgeb    schedule 17.06.2014