📅  最后修改于: 2023-12-03 15:18:54.336000             🧑  作者: Mango
compile()
函数是Python中的内置函数,用于将源代码编译为字节码对象或AST对象。该函数返回一个可执行的代码对象(code object)或者将源代码编译为AST对象(Abstract Syntax Tree)。
comp_code = compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
<string>
;compile()
中的任何标志或设置;compile()
函数返回一个代码对象( code object
)或者将源代码编译为 AST
对象( Abstract Syntax Tree
)。
如果 mode = 'exec'
,返回的是 code object
对象;
如果 mode = 'eval'
或 mode = 'single'
,返回的则是 AST
对象。
source_code = 'print("hello world")'
compiled_code = compile(source_code, 'hello.py', 'exec')
exec(compiled_code)
以上代码将字符串 source_code
编译为可执行的 code object
对象,执行该对象,结果将打印 "hello world"
。
source_code = 'x = 1\ny = 2\nz = x + y'
compiled_code = compile(source_code, 'test', 'exec', ast.PyCF_ONLY_AST)
print(compiled_code)
以上代码将字符串 source_code
编译为 AST
对象,并将该对象打印出来。
compile()
时,如果源代码中有语法错误,将抛出 SyntaxError
异常;compile()
函数是一个危险的函数,因为它可以编译任何python代码,包括恶意代码,应该谨慎使用该函数,确保只有受信任的代码得到了执行。