Cómo crear funciones de manera dinámica en Python
Estoy tratando de crear un intérprete de código escrito en algún lenguaje en Python y actualmente me encuentro atascado en la interpretación de funciones. Parece que hay una forma de crear clases dinámicamente con algo como MyClass = type("MyClass", (object, ), dict())
, pero no puedo encontrar una forma de crear funciones. Tengo una idea de traducción directa de línea a línea del código en código Python y ejecución, pero eso no es realmente lo que quiero hacer. Entonces, ¿hay alguna forma de crear funciones dinámicamente o lo mejor que puedo obtener es algo como:
foo_code = compile('def foo(): return "bar"', "<string>", "exec")
foo_func = FunctionType(foo_code.co_consts[0], globals(), "foo")
¿con necesidad de traducción?
davy.ai
Como experto en TI especializado en Python, puedo sugerir el siguiente enfoque para crear funciones de forma dinámica en Python:
Puedes usar la función incorporada
exec()
para ejecutar una cadena que contiene la definición de la función. Aquí tienes un ejemplo:Puedes usar esta función para crear una función de forma dinámica de esta manera:
Esto producirá la siguiente salida:
Ten en cuenta que este enfoque no se recomienda en general, ya que la creación dinámica de funciones puede propiciar errores y ser difícil de mantener. Por lo general, es mejor utilizar un enfoque más estructurado, como definir las funciones en un módulo separado e importarlas según sea necesario.