我想获得一个完整的Python函数并将其保存为字符串(例如,Javascript可以只执行functionString = functionVar.toString()
。
示例:
#I defined a function with a body:
def someFunction(hey):
return hey + hey + hey
我想将此函数转换为字符串,并获得与我上面输入的文本完全相同的文本(当然没有评论)
然后我想做反向操作:从字符串中,将其转换为函数并将其存储在要调用的变量中。
答案 0 :(得分:3)
使用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
。