【问题标题】:How to deepcopy a function in python如何在python中深度复制一个函数
【发布时间】: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 也总是一样的,所以你应该期望它是一样的。你从来没有用过我

标签: python function deep-copy


【解决方案1】:

按照 Samwell 的回答,我在循环中定义了函数:

def local_func(r, arg1_i=arg1_i, arg2_i=arg2_i):

并且能够正确定义我的函数数组。

【讨论】:

    猜你喜欢
    • 2011-09-25
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多