如何将lambda函数作为字符串读取?

2024-04-24 05:52:47 发布

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

我想读一个lambda函数,它是我创建后作为字符串创建的。

例如

func = lambda num1,num2: num1 + num2

我想把func读成:

'lambda num1,num2: num1 + num2'

有什么方法可以完成这一点,甚至可以读取lambda函数的任何部分吗?


Tags: 方法lambda函数字符串funcnum2num1
3条回答

您可以使用^{}模块中的getsourcelines来执行此操作

此函数以列表形式返回任何函数、模块、类或方法定义的所有行以及定义它的行号。

例如:

import inspect

f = lambda x, y : x + y

print inspect.getsourcelines(f)[0][0]

将函数的定义输出为:

f = lambda x, y: x + y

编辑:由于我误解了问题,更改了我的第一个答案。这个答案是借用了许多其他用途,但是我已经完成了代码,只显示您想要的字符串部分。

import inspect

func = lambda num1,num2: num1 + num2
funcString = str(inspect.getsourcelines(func)[0])
funcString = funcString.strip("['\\n']").split(" = ")[1]
print funcString

输出以下字符串:

lambda num1,num2: num1 + num2

您可以使用Python的eval()函数:

>>> func = eval('lambda num1,num2: num1 + num2')
>>> func
<function <lambda> at 0x7fe87b74b668>

计算任何表达式并返回值。

相关问题 更多 >