将整个函数作为string/并将string转换为函数?

2024-06-06 22:32:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想得到一个完整的Python函数并将其保存为字符串(例如,Javascript可以简单地执行functionString = functionVar.toString()。你知道吗

示例:

#I defined a function with a body:
def someFunction(hey):
    return hey + hey + hey

我想把这个函数转换成字符串,得到与我上面键入的完全相同的文本(当然没有注释)

然后我想做逆运算:从字符串,将其转换为函数,并将其存储在要调用的变量中。你知道吗


Tags: 函数字符串示例returndefwithfunctionbody
1条回答
网友
1楼 · 发布于 2024-06-06 22:32:38

使用exec你几乎可以得到你想要的。将函数编码为字符串是最简单的部分。你知道吗

"""Encode the function as a string"""
import inspect

funcString = inspect.getsource(someFunction)

从字符串中检索函数需要做更多的工作。下面的方法在试图恢复的函数范围之外会遇到全局变量或其他变量的问题,但是如果源代码完全指定了它,那么下面的方法应该可以工作。你知道吗

d = {}
exec(funcString, d)
f = next(d[k] for k in d if k != '__builtins__')

运行后,首先用于生成f的源定义的代码将绑定到变量f。你知道吗

相关问题 更多 >