我想获取整个Python函数并将其保存为字符串(例如,Javascript可以简单地执行functionString = functionVar.toString()
。
示例:
#I defined a function with a body:
def someFunction(hey):
return hey + hey + hey
我想将此函数转换为字符串并获得与上面输入的完全相同的文本(当然没有注释)
然后我想做逆操作:从字符串将其转换为函数并将其存储在要调用的变量中。
最佳答案
使用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
的源定义的代码将绑定(bind)到变量f
。
关于python - 将整个函数作为字符串获取/并将字符串转换为函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50573813/