以更好的模式重写我的简单Python代码

以更好的模式重写我的简单Python代码,python,function,for-loop,lambda,tuples,Python,Function,For Loop,Lambda,Tuples,我有一个函数 def max_f(tup, val): max = tup[0](val) out = tup[0] for funz in tup: new = funz(val) if new > max: max = new out = funz return out 我想用更好的方式来写。我试过了 def max_f2(tup, val): return (m

我有一个函数

def max_f(tup, val):
    max = tup[0](val)
    out = tup[0]
    for funz in tup:
        new = funz(val)
        if new > max: 
            max = new
            out = funz
    return out
我想用更好的方式来写。我试过了

def max_f2(tup, val):
    return (max(funz(val) for funz in tup))
但我应该返回一个函数,而不是一个值。我怎么能

以下是一些正确输出的示例

tupleFunz=(lambda x: x + 3 ,lambda x: x * 2,lambda x: x % 2)
max_f(tupleFunz,4)(8) #=> 16
max_f(tupleFunz,1)(8) #=> 11 

您可以使用带有lambda函数的
max()
参数执行此操作:

def max_f(tup, val):
    return max(tup, key=lambda x: x(val))
输出:

>>> tupleFunz=(lambda x: x + 3 ,lambda x: x * 2,lambda x: x % 2)
>>> max_f(tupleFunz,4)(8)
16
>>> max_f(tupleFunz,1)(8)
11