无参数调用的参数化函数

时间:2017-01-26 12:06:28

标签: python python-3.x

def snd(pair):
    x,y = pair
    return y

list_of_tuples = [(1,2), (3,4), (5,0)]
print(min(list_of_tuples, key=snd(list_of_tuples)))

上面的函数将pair作为参数,但是当尝试调用它时,它被调用而没有任何参数。 为什么这样?

2 个答案:

答案 0 :(得分:1)

Python中的许多函数都有一个可选的key参数,它接受一个可调用的函数(一个函数)应用于每个元素(这里是每个元组对)。

你不需要 自己提供论证,min为你做这件事。来自docs on min

  

有两个可选的仅限关键字参数。 key参数指定一个参数排序函数,如用于list.sort()的函数。

请查看here以获取有关关键功能的更多信息。

答案 1 :(得分:0)

你的代码几乎是正确的,只是在snd defintion后缩进,只使用key参数的函数名,因为min函数会自动将列表作为参数传递给函数。

def snd(pair):
  x,y = pair
  return y

list_of_tuples = [(1,2), (3,4), (5,0)]
print(min(list_of_tuples, key=snd))