Effective Computer Science - 頂は礎の上に -

新しい技術の多くは基礎的な技術の上に成り立っています。激動の技術変化に耐えうる体系知識の習得を目的に「基礎と実践の架け橋」となるサイトを目指します。

Pythonを深く理解するためのツール

dis --- Python バイトコードの逆アセンブラ

dis モジュールは CPython バイトコード (bytecode) を逆アセンブルすることでバイトコードの解析をサポートします。 docs.python.org

以下の方のように調査が行えます。 qiita.com

CPythonのcファイル

例えばpythonのreverse関数の内部を知りたい場合 cpython/listobject.c at master · python/cpython · GitHub のreverse_slice部分を参照することができます。

/* Reverse a slice of a list in place, from lo up to (exclusive) hi. */
static void
reverse_slice(PyObject **lo, PyObject **hi)
{
 assert(lo && hi);
 --hi;
 while (lo < hi) {
 PyObject *t = *lo;
 *lo = *hi;
 *hi = t;
 ++lo;
 --hi;
 }
}

f:id:hatanaman2:20190216075818p:plain
Cython Icon