IceIsNice
Почему так? и чем плохи операторы сравнения? или есть какая-то тонкость?
В питоне оператор сравнения для любого класса можно переопределить. Теоретически может так получиться, что
a == None и
a is None дадут разные результаты. В питоне есть только один экземпляр NoneType, оператором is вы гарантированно определяете то, что ваш объект является именно объектом None, и никаким другим. На практике, конечно, вероятность такого низка, но определять что две переменные ссылаются на один и тот же объект рекомендуется посредством is - это хорошая практика программирования.
А про то, как писать
is not или
not is черным по белому сказано в PEP8
https://www.python.org/dev/peps/pep-0008/#programming-recommendations