Я бы определил универсальную функцию, которая позволяет мне выбирать и заранее определять, какие функции я буду использовать, а затем применять выбранные с параметрами.Вы можете считать, что это двухэтапный подход:
Скомпилируйте нужные вам функции в объект.
Применение функций в скомпилированном объекте к параметрам.
Таким образом, вместо помещения функций в список, как вы делали в вопросе, вы компилируете их в объект с другой функцией.Он работает для случая нескольких функций, а также для одной функции, поэтому очень универсален.
import random
def sum_3 (a):
return (sum(a) + 3)
def sum_2 (b):
return (sum(b) + 2)
parameters = random.sample(range(1, 100000),5)
# generic function to apply functions on parameters
def compile(*fs): return lambda x: map(lambda f: f(x), fs)
# choose the functions you want to apply
dosum3and2 = compile(sum_3,sum_2)
dosum2only = compile(sum_2)
# apply the defined functions to parameters
print(list(dosum3and2(parameters)))
print(list(dosum2only(parameters)))
# output =>
# [294334, 294333]
# [294333]
Когда у вас много функций sum_1
, sum_2
, sum_3
, ..., sum_n
, вы сначала компилируете их, а затем применяете к таким параметрам, как
# compile the chosen functions
# which looks very similar as what you did with list (functions = [sum_3, sum_2]).
functions = compile(sum_1,sum_2,sum_3,...,sum_n)
# apply to parameters
functions(parameters)