国际访客建议访问 Primers 编程伙伴 国际版站点 > Python 教程 > compile 以获得更好的体验。

# Python 的内置函数 compile

请查看 Python 内建函数列表 了解更多相关 API。

说明:编译代码对象或 AST(抽象语法树)对象。

def compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1):
    '''
    将字符串或文件编译成代码或 AST 对象

    :param source: 字符串、字节字符串,或者 AST 对象
    :param filename: 文件名或 '<string>'
    :param mode: 'exec', 'eval' 或 'single'
    :param flags: 特性
    :param dont_inherit: 是否继承
    :param optimize: 优化级别
    :return: 代码或 AST 对象
    '''

!subtitle:说明

将字符串或文件编译成代码对象或 AST(抽象语法树)对象。该对象可以被 execeval 执行。

!subtitle:参数

  • source - 要编译的字符串、字节字符串,或者 AST(抽象语法树)对象

  • filename - 文件名,如果不使用文件,而是使用 source,此参数通常传递 '<string>' 作为标识

  • mode - 'exec' 表示一系列语句,'eval' 表示单个表达式,'single' 表示单个交互式语句

  • flags - 特性标志,默认为 0

  • dont_inherit - 是否不继承,默认为 False

  • optimize - 优化级别,默认为 -1,即使用解释器传入的优化选项作为优化级别

!subtitle:返回值

编译后的代码对象或 AST(抽象语法树)对象。

# 示例

运行示例

# 编译字符串内的表达式
x = 2
obj = compile("x**10", "<string>", "eval")
print(obj)
v = eval(obj)    # 执行表达式
print(v)         # 查看结果


# 编译字符串内的代码块
code = '''
def greet(name:str):
    print('hello', name)
'''
obj = compile(code, "<string>", "exec")
exec(obj)               # 执行代码块
greet('Miss Qiu')       # 调用代码块里创建的函数


# 编译文件
obj = compile("", __file__, "exec")    # __file__ 是一个特殊的内置变量,表示当前 Python 文件的路径
print(obj)

# 推荐阅读

本文 更新于: 2025-11-27 09:37:58 创建于: 2025-11-27 09:37:58