はじめに

ふと、Pythonの

Everything is expanded.Everything is shortened.
  1
 
[n for n in range(10) if n * n > 10]

ってどう処理されてるんだろうなぁと気になりました。というわけで読みます。今回はpythonコマンド起動してシェルで上記のコードを打ったという前提で読んでいくことにします。

読解に利用したPythonのバージョンは3.5.1です。

1ページで書けるかなと思いましたが長くなったので例によって以下のステップに分けます。

  1. スクリプト解析まで
  2. スクリプト解析
  3. AST作成
  4. シンボルテーブル作成
  5. バイトコード生成
  6. バイトコード実行

昨年(2016年)に読んだ時は主に構文解析→コード生成、実行の流れを読みました。この1年ぐらいPythonに触れる機会が多くあってPythonのオブジェクト指向がかなりわかってきたのでシーズン2としてオブジェクト周りに関する実装を読んでいきたいと思います。

読解に利用するPythonはバージョンを上げて3.6.3。そろそろ3.7出そうだなぁ


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS