В чем разница между «not foo is none» и «foo is not none»?

Я хотел бы знать, есть ли какая-либо разница в 2 ниже, и если да, то в чем она и что мы должны использовать.

foo = 9

if not foo is None:
    print('not foo is None')

vs

foo = 9

if foo is not None:
    print('foo is not None')

person MrZakbug    schedule 03.07.2018    source источник
comment
Я хочу сказать... нет?   -  person UmNyobe    schedule 03.07.2018
comment
Зачем вам сравнивать с None?   -  person Taohidul Islam    schedule 03.07.2018
comment
Они одинаковые, if foo is not None — это просто синтаксический сахар для большей читабельности.   -  person fafl    schedule 03.07.2018


Ответы (2)


Между ними нет абсолютно никакой разницы. Они будут запускаться и компилироваться точно так же. Вы можете проверить то же самое в их производительности, так как нет абсолютно никакой разницы.

person Inder    schedule 03.07.2018

Давайте оценим условное:

1)  if not foo(if foo is false) is None (is false):

false равно false... поэтому он напечатает строку.

2) if foo (being true) is not None(true)

true is true ..... поэтому он напечатает строку.

оба условия верны и будут напечатаны

person sjdm    schedule 03.07.2018
comment
Извините, но я, честно говоря, не могу понять, что ваша оценка должна показать. Вы написали это очень запутанно. Тем не менее, я на 70% уверен, что это неправильно. - person Aran-Fey; 03.07.2018