Función compile() de Python

Python3 内置函数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.
  • Parámetro filename:
    • Tipo: cadena
    • Descripción: el nombre del origen del código, normalmente se establece como el nombre del archivo fuente.
  • Parámetro mode:
    • 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

Resultado de la ejecución:

3
Hello
30

Análisis del código:

  1. mode='eval' se usa para una expresión individual.
  2. 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")

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.


Python3 内置函数Funciones integradas de Python3


Otras extensiones