0

関数とそれが返す整数について少し混乱しidています。これは、メモリ内のオブジェクトの場所への参照です (正しいと思います)。

したがって、Python シェルで最初に行うことを想定すると、>>> id(2)すぐに整数が返されます。ただし、intオブジェクトのインスタンスを作成したことはありません。その場でインスタンス化が行われていますか?

4

1 に答える 1

2

はい、そうです。コンパイラは、VM を実行するためのバイトコードを生成するときにインスタンス化します。

-1 から 256 までの整数も CPython では特殊なケースですが。

import dis

def foo():
  a = 2

dis.dis(foo)

...

  6           0 LOAD_CONST               1 (2)
              3 STORE_FAST               0 (a)
              6 LOAD_CONST               0 (None)
              9 RETURN_VALUE        
于 2013-06-28T19:31:51.930 に答える