您如何以字符串形式读取lambda函数?

问题描述 投票:9回答:4

我想在创建字符串后读取作为字符串创建的lambda函数。

例如,

func = lambda num1,num2: num1 + num2

我想将func读为:

'lambda num1,num2: num1 + num2'

是否有方法可以做到这一点,甚至可以读取lambda函数的任何部分?

python string function lambda
4个回答
5
投票
编辑:因为我误解了问题,所以改变了我的第一个答案。这个答案是从许多其他用途中借用的,但是我已经完成了代码,仅显示所需字符串的一部分。

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

3
投票
此函数以列表的形式返回任何函数,模块,类或方法的定义的所有行以及定义该行的行号。

例如:

inspect

将函数的定义输出为:

import inspect

f = lambda x, y : x + y

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

2
投票
eval()

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


2
投票
inspect

输出如下:

inspect

您可以看到#!/usr/bin/env python3 # coding: utf-8 import inspect func = lambda num1, num2: num1 + num2 def f(): a = 1 b = 2 return a + b def get_code_as_string(passed_func): return inspect.getsourcelines(passed_func) if __name__ == '__main__': # feed a lambda function print(get_code_as_string(func)) #feed a normal function print(get_code_as_string(f)) 返回一个列表的元组和一个整数。该列表包含传递给(['func = lambda num1, num2: num1 + num2\n'], 6) (['def f():\n', ' a = 1\n', ' b = 2\n', ' return a + b\n'], 8) 的函数的所有行,并且整数表示所提供函数在其中开始的行号。

© www.soinside.com 2019 - 2024. All rights reserved.