勘違いする人もいそうだから補足するけど
>> a = 257
>> b = 257
>> a is b
がFalseを返すのは「複数行に渡って書いてるから」ではなく「REPLが一行ずつコンパイルしているから」だよ
通常のコーディングではモジュールや関数単位でリテラルを保存する領域が作られて、そこへの参照が代入されているためTrueを返す
REPL上でも
def function():
a = 257
b = 257
return a is b
はTrueを返すのが確認できるはず