gpt4 book ai didi

python - Python 中具有不同参数的高阶函数

转载 作者:太空宇宙 更新时间:2023-11-03 16:52:37 24 4
gpt4 key购买 nike

我一遍又一遍地重复以下代码:

def foo(data):
result = (0, 0, 0)
var1, var2, var3 = init_variables(data)
for i in xrange(var1):
result[0] += variable_func_1(data, var2, var3)
result[1] += variable_func_2(data, var3)
result[2] += fixed_func()
return result

在所有重复中,除了 variable_func_n 可以采用可变数量的参数之外,所有内容都是固定的,这些函数的数量也有所不同。

我想分解所有这些函数的通用代码,因此首先想到的是使用高阶函数,如下所示:

def foo(data, func_list):
var1, var2, var3 = init_variables(data)
results = (len(func_list) + 1) * [0]
for i in xrange(var1):
for j, func in enumerate(func_list):
results[j] += (func(data, var1, var2, var3))
results[len(func_list)] += fixed_func()
return results

这个解决方案的问题是它需要我修改所有不同函数的签名,以便它们可以接受更多参数。是否有一个更干净的解决方案,不需要我修改所有传入函数的签名?

最佳答案

也许您正在寻找inspect模块?

In [11]: import inspect

In [12]: def f(a, b): pass

In [13]: inspect.getargspec(f)
Out[13]: ArgSpec(args=['a', 'b'], varargs=None, keywords=None, defaults=None)

该库可以告诉您每个函数中的参数数量以及每个参数的名称,以便您可以添加自己的逻辑以确保正确调用该函数。

真正的答案是你可能需要重构你的代码,说实话,这种模式对我来说似乎有点奇怪..

关于python - Python 中具有不同参数的高阶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35734427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com