数値の場合は計算結果が同じ値だったら一緒だったのでそういうものだと思ってたら 256 までだった
整数のみで小数なら 0.5 でも別
a = 10
print(a is (a + 0))
# True
b = 1024
print(b is (b + 0))
# False
c = 256
print(c is (c + 0))
# True
d = 257
print(d is (d + 0))
# False
e = 0.5
print(e is (e + 0))
# False
そういえば前に よく使われる小さい数は最初からオブジェクトの参照を保持していてそれを使う みたいなこと聞いたような気もする
ソースコード中のリテラルは全部同じ id で異なるのは計算した結果 動的に作られた値だけ
a = 1000
b = 1000
c = 1000
d = [2000, 2000, 2000]
print(id(a))
# 1457936
print(id(b))
# 1457936
print(id(c))
# 1457936
for x in d:
print(id(x))
# 1457968
# 1457968
# 1457968