__code__仅仅是函数和方法的代码对象
相同点:都是代码对象
__code__属性
是函数对象的固有属性,存储了该函数编译后的字节码、变量名、常量等元数据
通过func.__code__直接访问,反映的是函数定义时静态编译的结果
def foo(): pass
print(type(foo.__code__)) # 输出 <class 'code'>
compile()生成的代码对象,print(type(compile(...)))可以看到也是<class 'code'>
通过动态编译字符串形式的代码生成,需配合exec或eval执行
支持三种模式:'exec'(多行代码)、'eval'(单表达式)、'single'(交互式单语句)
compile()可处理任意字符串代码,__code__仅关联特定函数
看__code__帮助:
import test
help(test.Student.init.code)可以看到:
create a code object not for the faint of heart(不适合胆小的人)--这是调侃么
该对象包括co_argcount,co_code,co_name,co_consts,co_varnames,co_names...
自己试验