python - 将整个函数作为字符串获取/并将字符串转换为函数?

标签 python string python-3.x function delegates

我想获取整个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/

相关文章:

python - 有没有办法在 pyplot 极坐标图中指定角轴上的轴单位?

javascript - 如何正确使用innerHTML从html字符串创建一个元素(可能有子元素)?

C++ std::string 与 !=、< 和 > 的用法

python - 考虑顺序对 pandas 列执行累积计数

python - 使用 Sympy 方程式绘图

python - Beautifulsoup : Difference between . find() 和 .select()

python - 如何在 Python 中逐字打印字符串

python - 追加/格式化字符串

python - 使用字典插入或更新

c - 用其他子字符串替换字符串的子字符串时出现段错误