Python代码对象

代码对象是CPython实现的底层细节。每个代表一个尚未绑定到函数中的可执行代码块。尽管代码对象代表一些可执行代码,但是它们本身不能直接调用。要执行代码对象,必须使用exec关键字。

在下面的示例中,我们看到如何为给定的代码段创建代码对象,以及与帽子代码对象关联的各种属性是什么。

示例

code_str = """
print("Hello Code Objects")
"""
# 创建代码对象
code_obj = compile(code_str, '<string>', 'exec')
# 获取代码对象
print(code_obj)
#代码对象的属性
print(dir(code_obj))
# 档名
print(code_obj.co_filename)
# 原始字节码的第一块
print(code_obj.co_code)
#变量名称
print(code_obj.co_varnames)
输出结果

运行上面的代码给我们以下结果-

<code object <module> at 0x000001D80557EF50, file "<string>", line 2>
['__class__', '__delattr__', '__dir__', '__doc__', ……., '__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 'co_firstlineno', …..,posonlyargcount', 'co_stacksize', 'co_varnames', 'replace']
<string>
b'e\x00d\x00\x83\x01\x01\x00d\x01S\x00'
()