如何从input()读取函数体?

时间:2015-11-05 00:56:15

标签: python arrays input lambda

在下面的代码块中,我正在尝试在input_strats数组中定义3个函数。为什么它只提示用户然后打印“定义1”一次?谢谢!

 prev_used = 3
 input_strats = [0 for x in range(prev_used)]
 for i in range(prev_used):
     input_strats[i] = lambda alpha,beta,x,z,year: input('Expression here\n')
     print("defined 1\n")

1 个答案:

答案 0 :(得分:1)

在Python中将函数转换为列表很简单:只需列出函数名称,如下所示:

def year1(a, b):
    return 0.9*a + 0.1*b

def year2(a, b):
    return (a+b) / 2.0

def year3(a, b):
    return a**2 + b**2

func_list = [year1, year2, year3]

for udf in func_list:
    print udf
    print udf(2, 5)

提供您期望的输出:

<function year1 at 0x1caa410>
2.3
<function year2 at 0x1caa500>
3.5
<function year3 at 0x1caa578>
29

将字符串转换为函数需要一些技巧。您决定所需的输入符号,并获取表示函数定义的左侧和右侧的字符串。然后,您可以创建一个泛型函数,该函数使用参数字典和要评估的文本作为函数定义返回构造函数。有关编码详细信息,请参阅此前发布 function from a string