Python LanguageEjecución de código dinámico con `exec` y` eval`


Sintaxis

  • eval (expresión [, globals = None [, locals = None]])
  • exec (objeto)
  • exec (objeto, globals)
  • exec (objeto, globales, locales)

Parámetros

Argumento Detalles
expression El código de expresión como una cadena o un objeto de code
object El código de la declaración como una cadena, o un objeto de code
globals El diccionario a utilizar para variables globales. Si no se especifican los locales, esto también se usa para los locales. Si se omite, se utilizan los globals() del ámbito de llamada.
locals Un objeto de mapeo que se utiliza para las variables locales. Si se omite, se usa el que se pasa para los globals . Si se omiten ambos, entonces se utilizan los globals() y locals() del ámbito de llamada para los globals y locals respectivamente.

Observaciones

En exec , si los globals son locals (es decir, se refieren al mismo objeto), el código se ejecuta como si estuviera en el nivel del módulo. Si los elementos globals y locals son objetos distintos, el código se ejecuta como si estuviera en un cuerpo de clase .

Si las globals de objeto se pasa en, pero no especifica __builtins__ clave, entonces Python funciones integradas y los nombres se añaden automáticamente al ámbito global. Para suprimir la disponibilidad de funciones como la print o la isinstance en el ámbito ejecutado, permita que los globals tengan la clave __builtins__ asignada al valor None . Sin embargo, esto no es una característica de seguridad.

La sintaxis específica de Python 2 no debe usarse; La sintaxis de Python 3 funcionará en Python 2. Por lo tanto, los siguientes formularios están en desuso: <s>

  • exec object
  • exec object in globals
  • exec object in globals, locals

Ejecución de código dinámico con `exec` y` eval` Ejemplos relacionados