1
インタプリタによって維持される整数キャッシュとは何ですか?
Pythonのソースコードを調べたところPyInt_Object、int(-5)からint(256)(@ src / Objects / intobject.c)までの範囲のsの配列が維持されていることがわかりました。 少しの実験でそれが証明されます: >>> a = 1 >>> b = 1 >>> a is b True >>> a = 257 >>> b = 257 >>> a is b False しかし、これらのコードをpyファイルで一緒に実行すると(またはセミコロンで結合すると)、結果は異なります。 >>> a = 257; b = 257; a is b True なぜそれらがまだ同じオブジェクトであるのか興味があるので、構文ツリーとコンパイラーを深く掘り下げて、以下にリストされている呼び出し階層を思いつきました。 PyRun_FileExFlags() mod = PyParser_ASTFromFile() …