一. 1.所有python写的代码都被变异成了codeobject
print(f.__code__)
co_code保存真正的byte code 使用二进制保存的,通俗表达也能理解为他的汇编, 不一般使用dis.dis()来查看汇编
code = f.__code__
code.co_code
二. co_name 函数名字 co_filename 文件的路径 co_lnotab maping 每一个字节码对应的源代码,对应的行数
co_argcount # 参数数量, 函数重载机制相关(除了, *)之外的传参
co_posonlyargcount 函数定义的不用制定key名字的传参数量 co_kwonlyargcount 函数定义的是必须要制定key来传参的参数数量
def a(a,b=1, /, *age,**kwargs)
三.
def f(a):
b = a
return b
code = f.__code__
code.co_nlocals # 2 , 局部变量数量
code.co_names # ('a', 'b')
co_cellvars # ()
code_freevars # ()
code_consts # (None,)
查看函数的字节码
dis.dis(f)
co_cellvars 我这个闭包里面 自己使用的变量 co_freevars 闭包别人在我这里使用的变量