Python compile() Function
compile()It is a built-in function in Python used to compile source code into a code object.
The compiled code object can beexec()oreval()executed.compile()It is mainly used for code optimization, dynamic execution, and precompiling common code.
Glossary: compile 意为"编译",将源代码转换为可执行代码。
Basic Syntax and Parameters
Syntax Format
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
Parameter Description
- Parameter source:
- Type: string or AST object
- Description: The source code to compile.
- Type: string
- Description: The name of the code source, usually set to the source file name.
- Type: string
- Description: Compilation mode,
'exec'(statement block),'eval'(expression),'single'(single statement).
Function Description
- Return Value: Returns a code object.
Examples
Example 1: Basic Usage
Example
# Compile expression
code = compile("1 + 2", "<string>", "eval")
result = eval(code)
print(result) # Output: 3
# Compile statement block
code = compile("print('Hello')", "<string>", "exec")
exec(code) # Output: Hello
# Compile multi-line code
code = compile("""
x = 10
y = 20
result = x + y
""", "<string>", "exec")
exec(code)
print(result) # Output: 30
code = compile("1 + 2", "<string>", "eval")
result = eval(code)
print(result) # Output: 3
# Compile statement block
code = compile("print('Hello')", "<string>", "exec")
exec(code) # Output: Hello
# Compile multi-line code
code = compile("""
x = 10
y = 20
result = x + y
""", "<string>", "exec")
exec(code)
print(result) # Output: 30
Run result:
3 Hello 30
Code analysis:
- mode='eval' is used for a single expression.
- mode='exec' is used for statement blocks.
Example 2: Dynamic Code Execution
Example
# Code entered by the user
user_code = "for i in range(5): print(i, end=' ')"
code = compile(user_code, "<user>", "exec")
exec(code) # Output: 0 1 2 3 4
# Use compile to precompile for better performance
import time
code_str = "sum(range(1000))"
compiled = compile(code_str, "<string>", "eval")
start = time.time()
for _ in range(10000):
eval(compiled)
print(fAfter compilation: {time.time() - start:.4f} seconds)
user_code = "for i in range(5): print(i, end=' ')"
code = compile(user_code, "<user>", "exec")
exec(code) # Output: 0 1 2 3 4
# Use compile to precompile for better performance
import time
code_str = "sum(range(1000))"
compiled = compile(code_str, "<string>", "eval")
start = time.time()
for _ in range(10000):
eval(compiled)
print(fAfter compilation: {time.time() - start:.4f} seconds)
Run result:
compile() can precompile code to improve execution efficiency.
compile()It is very useful in scenarios of dynamic code generation and execution.
Other Extensions
Python3 Built-in Functions