Python代码对象 - 它们用于什么?

Ele*_*naT 4 python types internals

Python代码对象有什么用途?除了被解释器或调试器使用之外,还有其他有用的用法吗?

您是否直接与代码对象进行了交互?如果是,在什么情况下?

Gle*_*ard 8

代码对象的主要用途是将函数(代码)的静态部分与动态部分(函数)分开.代码对象是存储在.pyc文件中的东西,在编译代码时创建; 声明函数时,在运行时从它们创建函数对象.它们暴露在调试器反射中,通常不需要直接使用.

所有支持闭包的语言都有类似的东西; 他们并不总是接触到Python中的语言,因为Python比大多数语言都有更全面的反映.

您可以使用代码对象来实例化函数对象types.FunctionType,但很少有任何实际用途 - 换句话说,不要这样做:

def func(a=1):
    print a

func2 = types.FunctionType(func.func_code, globals(), 'func2', (2,))
func2()
# 2
Run Code Online (Sandbox Code Playgroud)