Это зависит от значений, которые может принимать ваша переменная, и от ожиданий вашего кода. Если ваша переменная может принимать другие значения falsey , тогда да, разница между None
и, скажем, []
может быть значительной, и вам необходимо явно проверить is None
.
но не всегда. Что если ваше значение равно falsey []
, а вы пишете if foo:
, чтобы решить, есть ли у вас значение, требующее обработки? Ну, пустой список тоже может не нуждаться в обработке, так как он пустой. Таким образом, None
и []
могут рассматриваться одинаково. В этом случае вам нужно явно проверить is None
и и пустой список, и в этом случае if foo:
уже очень кратко инкапсулирует оба.
В вашем случае, если переменная может быть None
или Thread
, нет разницы, добавите ли вы is not None
или нет, в обоих случаях он будет вести себя одинаково. Так зачем делать его более многословным, чем нужно?
Нет единого правила, подходящего для всех ситуаций.