在下面的代码块中,我正在尝试在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")
答案 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