我正在查看 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))
最佳答案
您似乎误解了starred function argument作品。当您将函数调用为 minmax(something, [1, 2, ...])
时,args
将成为一个元素等于 [1, 2、...]
。因此,循环体永远不会被执行,并且 test
的值并不重要。该函数应该以 minmax(something, 1, 2, ...)
的形式调用。这样 args
即可获取值 (1, 2, ...)
,并且循环会遍历其元素。
澄清:答案基于您所写的内容。您的代码片段是正确的并且完全按照预期工作。
关于python - 了解 maxmin 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34583089/