タグ

pythonとopcodeに関するnagolingのブックマーク (1)

  • Pythonバイトコードの知識 | Black Duck Blog

    命令コードは総体的に簡潔ですが、次の処理を経ているために奇妙に見えるものもいくつかあります。 コンパイラの最適化 インタープリタの最適化(これにより余分な命令コードが生じる) シーケンスを用いた変数への代入 最初のカテゴリでは、ソースが変数のシーケンスを代入するとどうなるかを見ていきます。 (1) a, b = 1, '2' (2) a, b = 1, e (3) a, b, c = 1, 2, e (4) a, b, c, d = 1, 2, 3, e 上記の4つのステートメントは全く異なるバイトコードを生成します。 最初のステートメントは、右辺(RHS)に代入された値が定数のみなので最も単純なケースです。この場合、CPythonはUNPACK_SEQUENCEを用いてタプル(1, '2')を作成し、2つの要素をスタックに設定して、変数aとbのそれぞれについてSTORE_FASTを作成す

  • 1