Они определенно не одинаковы. В Python строки
foo is bar
id(foo) == id(bar)
эквивалентны.
Если вы прочитаете документы для id
https://docs.python.org/3/library/functions.html#id,, вы увидите, что использование ключевого слова is
буквально проверяет, совпадают ли два объекта.
Вы должны использовать только ключевое слово is
для проверки, является ли объект None
. Это связано с тем, что для производительности Python создает один объект None
при запуске, который затем используется всякий раз, когда переменная становится None
. Так что если две переменные None
, то они будут буквально одним и тем же объектом, а foo is bar
будет True
.
Поскольку пустой список []
, безусловно, является объектом, отличным от None
, для проверки, является ли список пустым, определенно следует сделать len(cur_list)==0