安装python
1 | sudo apt-get install python |
咦?好像一般的linux发行版自带。呃,忘了。
终端里键入python。
函数定义及函数对象
1 | def foo(a): |
字节码
生成代码对象的指令叫字节码(由一组字节组成)。它也是代码对象的一个属性,包含了各种作用于解释器的指令。
1 | foo.func_code.co_code |
通过ord查看字节码:
1 | [ord(b) for b in foo.func_code.co_code] |
解释器循环接收各个字节,查找每个字节的指令并执行。字节码本身并不包含任何python对象,或引用任何对象。
通过dis模块了解字节码的意思–反汇编字节码
1 | >>> def foo(a): |
- 最左列是源代码行号
- 第二列是字节码的偏移量
- 中间列是字节的名字--供程序员看
- 第四列为参数本身--表示一个指向代码对象其它属性的索引。LOAD_CONST的参数指向列表co_consts,STORE_FAST的参数指向co_varnames。dis在第四列所指向的的地方查找常数或者名称, 最后在第五列返回给我们它找到的数据。
1 | >>> foo.func_code.co_consts[1] |