Python 两个数字的总和,默认最大值不能超过

Python 两个数字的总和,默认最大值不能超过,python,sum,Python,Sum,假设我有一个数值变量,它将添加另一个值,但我想确保这个变量永远不会超过最大值,一旦超过,它将默认为最大值 例如,给定最大值100,以及一个执行此操作的函数(称为maxadd): 我可以将其定义为一个普通函数,如下所示: def maxadd(a, b, _max): res = a + b if res > _max: return _max return res 但我觉得它可以在一条线上完成,也许可以用一个lambda。但我似乎什么都想不出来。性

假设我有一个数值变量,它将添加另一个值,但我想确保这个变量永远不会超过最大值,一旦超过,它将默认为最大值

例如,给定最大值100,以及一个执行此操作的函数(称为maxadd):

我可以将其定义为一个普通函数,如下所示:

def maxadd(a, b, _max):
    res = a + b
    if res > _max:
        return _max
    return res

但我觉得它可以在一条线上完成,也许可以用一个lambda。但我似乎什么都想不出来。性能也是一个问题,因此我希望得到尽可能快的解决方案,而且我觉得此函数可能会采取不必要的步骤。逻辑上,您希望返回a+b或_max,以较小者为准。因此,您可以将内置函数min用于:

def maxadda,b,_最大值: 返回最小值+b,最大值
从逻辑上讲,您希望返回a+b或_max,以较小者为准。因此,您可以将内置函数min用于:

def maxadda,b,_最大值: 返回最小值+b,最大值
您可以使用mina+b,最大值。

您可以使用mina+b,最大值。

如果您想使用lambda:

 f = lambda a, b, max_: min(a + b, max_)
例如:

f(90, 8, 100)
98

一百


如果要使用lambda:

 f = lambda a, b, max_: min(a + b, max_)
例如:

f(90, 8, 100)
98

一百


如何使用lambda而不是def f。。。区别?区别在于,使用lambda意味着如果名称f引发异常(例如,在调用f1、2、None时),则该名称f将不会包含在堆栈跟踪中。这是不可取的,所以通常如果一个函数有一个名称,那么它就不应该是lambda。。。区别?区别在于,使用lambda意味着如果名称f引发异常(例如,在调用f1、2、None时),则该名称f将不会包含在堆栈跟踪中。这是不可取的,所以一般来说,如果函数有名称,那么它就不应该是lambda。