如何将函数转换为str?

Kev*_* JJ 8 python serialization python-3.6

假设我有一个以下的lambda函数.

fn = lambda x: print(x) 
Run Code Online (Sandbox Code Playgroud)

如果我想将其转换为字符串

"lambda x: print(x)" 
Run Code Online (Sandbox Code Playgroud)

我能做什么?我期待str(fn)或者str(fn.__code__)会这样做,但不是真的...它只打印出类型,mem位置等.

我也尝试了pickle.dumps和json,但我无法得到我想要的东西.

如何将函数转换为显示函数定义的字符串?

---我想把函数作为输入并将其转换为字符串

小智 12

如果你已经安装了莳萝,这很容易.(pip install dill)

from dill.source import getsource
squared = lambda x:x**2
print(getsource(squared))
Run Code Online (Sandbox Code Playgroud)


lum*_*uri 8

尝试使用inspect,它是 Python3 标准库的一部分:

import inspect

func = lambda e: e**2

print(inspect.getsource(func))
Run Code Online (Sandbox Code Playgroud)

返回一个字符串:

func = lambda e: e**2