Función compile() de Python
Funciones integradas de Python3
compile()Es una función integrada en Python que se utiliza para compilar código fuente en un objeto de código (code object).
El objeto de código compilado puede serexec()oeval()ejecutado.compile()Se utiliza principalmente para optimización de código, ejecución dinámica y precompilación de código común.
Glosario: compile 意为"编译",将源代码转换为可执行代码。
Sintaxis básica y parámetros
Formato de sintaxis
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
Descripción de parámetros
- Parámetro source:
- Tipo: cadena o objeto AST
- Descripción: el código fuente a compilar.
- Tipo: cadena
- Descripción: el nombre del origen del código, normalmente se establece como el nombre del archivo fuente.
- Tipo: cadena
- Descripción: modo de compilación,
'exec'(bloque de sentencias),'eval'(expresión),'single'(sentencia única).
Descripción de la función
- Valor de retorno: Devuelve un objeto de código.
Ejemplos
Ejemplo 1: Uso básico
Ejemplo
# Compilar expresión
code = compile("1 + 2", "<string>", "eval")
result = eval(code)
print(result) # Salida: 3
# Compilar bloque de sentencias
code = compile("print('Hello')", "<string>", "exec")
exec(code) # Salida: Hello
# Compilar código de varias líneas
code = compile("""
x = 10
y = 20
result = x + y
""", "<string>", "exec")
exec(code)
print(result) # Salida: 30
code = compile("1 + 2", "<string>", "eval")
result = eval(code)
print(result) # Salida: 3
# Compilar bloque de sentencias
code = compile("print('Hello')", "<string>", "exec")
exec(code) # Salida: Hello
# Compilar código de varias líneas
code = compile("""
x = 10
y = 20
result = x + y
""", "<string>", "exec")
exec(code)
print(result) # Salida: 30
Resultado de la ejecución:
3 Hello 30
Análisis del código:
- mode='eval' se usa para una expresión individual.
- mode='exec' se usa para bloques de sentencias.
Ejemplo 2: Ejecución dinámica de código
Ejemplo
# Código ingresado por el usuario
user_code = "for i in range(5): print(i, end=' ')"
code = compile(user_code, "<user>", "exec")
exec(code) # Salida: 0 1 2 3 4
# Usar compile para precompilar y mejorar el rendimiento
import time
code_str = "sum(range(1000))"
compiled = compile(code_str, "<string>", "eval")
start = time.time()
for _ in range(10000):
eval(compiled)
print(f"Después de compilar: {time.time() - start:.4f} segundos")
user_code = "for i in range(5): print(i, end=' ')"
code = compile(user_code, "<user>", "exec")
exec(code) # Salida: 0 1 2 3 4
# Usar compile para precompilar y mejorar el rendimiento
import time
code_str = "sum(range(1000))"
compiled = compile(code_str, "<string>", "eval")
start = time.time()
for _ in range(10000):
eval(compiled)
print(f"Después de compilar: {time.time() - start:.4f} segundos")
Resultado de la ejecución:
compile() puede precompilar el código para mejorar la eficiencia de ejecución.
compile()Es muy útil en escenarios de generación y ejecución dinámica de código.
Funciones integradas de Python3
Otras extensiones