了解maxmin函数

时间:2016-01-04 00:02:55

标签: python python-3.x

我正在浏览Learning Python中的函数,这个让我有点理解,想知道是否有人可以帮助我更好地理解它,更具体地说是if test(arg, res) 当我运行第一个函数时,作为第一个参数并不重要,那么第二个参数必须是一个列表,它只是按照写入的方式将列表反射回来。当你将这些功能组合起来并将它们打印在一起时,我对它的最大值和最小值进行了混淆,我感到很困惑。

def minmax(test, *args):
    res = args[0]
    for arg in args[1:]:
        if test(arg, res):
            res = arg
    return res
def lessthan(x, y): return x < y
def grtrthan(x, y): return x > y
print(minmax(lessthan, 4, 2, 1, 5, 6, 3))
print(minmax(grtrthan, 4, 2, 1, 5, 6, 3))

2 个答案:

答案 0 :(得分:3)

您似乎误解了starred function argument的工作原理。当您将函数称为minmax(something, [1, 2, ...])时,args将成为一个等于[1, 2, ...]的元素的元组。因此,循环体不会被执行,test的值无关紧要。该函数应该被调用为minmax(something, 1, 2, ...)。这种方式args获取值(1, 2, ...),循环遍历其元素。

澄清:答案取决于你写的内容。您的代码段是正确的,并且完全符合预期。

答案 1 :(得分:0)

我还没读过那本书,所以我不知道上下文,但看起来函数(minmax)没有很好的命名。它不返回两个值,它只返回一个 - 哪一个取决于你给它的测试函数。如果您传入lessthan函数:

print(minmax(lessthan, 4, 2, 1, 5, 6, 3))

您将获得1,如果您传入grtrthan功能:

print(minmax(grtrthan, 4, 2, 1, 5, 6, 3))

您将获得6