Я хотел бы знать, есть ли какая-либо разница в 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')
Я хотел бы знать, есть ли какая-либо разница в 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')
Между ними нет абсолютно никакой разницы. Они будут запускаться и компилироваться точно так же. Вы можете проверить то же самое в их производительности, так как нет абсолютно никакой разницы.
Давайте оценим условное:
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 ..... поэтому он напечатает строку.
оба условия верны и будут напечатаны
if foo is not None
— это просто синтаксический сахар для большей читабельности. - person fafl   schedule 03.07.2018