パフォーマンスを向上させるために、いくつかの数値オブジェクトを保持する記事を読んでいます。たとえば、Pythonビルトイン整数オブジェクト
x = 3
y = 3
print(id(x))
print(id(y))
は同じ値を示します。つまり、xとyはまったく同じオブジェクトを参照しています。この記事では、保持されている番号オブジェクトがおよそ1〜100の範囲内にあることを示唆していました。
for i in range(-1000,1000):
x = int(str(i))
y = int(str(i))
if str(id(x)) == str(id(y)):
print(i)
をし、その結果は非常に奇妙です:
は、だから私は、正確な範囲を取得するために、次のコードをテストしたことは-5〜256を出力します。私はこれらの2つの魔法の数字がどのように由来し、なぜそれらが使われているのだろうと思います。また、これらの2つの値は環境によって異なりますか? ありがとう!
が起こって起こっかそれに依存しませんCPython実装の詳細(最適化)。一般的なPythonではありません。 –
答えは、可変ではないタイプのIDを使わないでください – Julius