【发布时间】:2021-05-05 16:12:50
【问题描述】:
我需要在许多情况下计算一个函数,然后对所有这些情况求和。我想一种方法是创建一个列表、字典或函数数组,但无论我做什么,前一个函数都会在循环中被删除。
def general_func(r, arg1, arg2):
return r*arg1*arg2
fun_list = []
for i in range(N):
arg1_i, arg2_i = my_arr[1:3]
def local_func(r):
return general_func(r, arg1_i, arg2_i)
fun_list.append(local_func)
我尝试了很多东西,但无论我做什么,我总是得到一个 N 倍于相同函数的元组。
我也不确定我最终将如何对所有函数求和以保留一个大函数,该函数将是所有其他函数的总和。
【问题讨论】:
-
被擦除的不是函数,而是局部变量的变化。执行
def local_func(r, arg1_i=arg1_i, arg2_i=arg2_i):,以便在定义函数时捕获当前值。 -
什么是 N 和 my_arr?你可能想要 lambda。 local_func 也总是一样的,所以你应该期望它是一样的。你从来没有用过我