如何在 python 中动态创建函数
How to dynamically create functions in python
我正在尝试用 python 中的某种语言编写代码的解释器,目前停留在解释函数上。似乎有一种方法可以使用 MyClass = type("MyClass", (object, ), dict())
之类的东西动态创建 类 但我找不到创建函数的方法。我有一个在 python 代码和执行中直接进行代码行到行翻译的想法,但这并不是我真正想要做的。那么有没有一种方法可以动态创建函数,或者我能得到的最好的方法是:
foo_code = compile('def foo(): return "bar"', "<string>", "exec")
foo_func = FunctionType(foo_code.co_consts[0], globals(), "foo")
需要翻译吗?
刚找到答案。动态创建函数的最佳方式是根本不创建它。这与我的问题有点冲突,但仍然解决了问题。这个想法是将函数的结构作为字典中的键,并将函数开头的一行作为值。所以现在可以通过函数的结构找到它,执行然后return通过提前保存Main的最后一行来正常执行。
我正在尝试用 python 中的某种语言编写代码的解释器,目前停留在解释函数上。似乎有一种方法可以使用 MyClass = type("MyClass", (object, ), dict())
之类的东西动态创建 类 但我找不到创建函数的方法。我有一个在 python 代码和执行中直接进行代码行到行翻译的想法,但这并不是我真正想要做的。那么有没有一种方法可以动态创建函数,或者我能得到的最好的方法是:
foo_code = compile('def foo(): return "bar"', "<string>", "exec")
foo_func = FunctionType(foo_code.co_consts[0], globals(), "foo")
需要翻译吗?
刚找到答案。动态创建函数的最佳方式是根本不创建它。这与我的问题有点冲突,但仍然解决了问题。这个想法是将函数的结构作为字典中的键,并将函数开头的一行作为值。所以现在可以通过函数的结构找到它,执行然后return通过提前保存Main的最后一行来正常执行。