首页 新闻 会员 周边 捐助

__code__是函数对象,和compile生成函数对象区别

0
[已解决问题] 解决于 2025-08-27 15:43

__code__仅仅是函数和方法的代码对象
相同点:都是代码对象

_java_python的主页 _java_python | 小虾三级 | 园豆:984
提问于:2025-08-27 15:38
< >
分享
最佳答案
0

__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...
自己试验

_java_python | 小虾三级 |园豆:984 | 2025-08-27 15:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册