Как не использовать оператор is
Тут оба a и b ссылаются на один и тот же объект при инициализации с одинаковым значением в одной строке. Это происходит когда a и b устанавливаются в 257 значения в одной строке, интерпретатор Python создает новый объект, а затем одновременно ссылается на вторую переменную.
Если вы делаете это в отдельных строках, он не "знает", что уже существует 257 как объект. Это оптимизация компилятора, и она особенно применима к интерактивной среде. Когда вы вводите две строки в живой интерпретатор, они компилируются отдельно, следовательно, оптимизируются отдельно.
Разъяснивший Python
Post #4638
317
