2011-09-23 68 views
1

这是一个关于符号的微妙问题。 我想调用具有特定参数的函数,但不必重新定义它。函数中的参数python

例如,min()与第二个参数的关键功能key = itemgetter(1)会是什么样子:

min_arg2 = lambda p,q = min(p,q, key = itemgetter(1)) 

我希望只是把它作为像min(*itemgetter(1)) ...

有谁知道这个怎么做?谢谢。

+1

“但不必重新定义它。”这怎么可能被避免?你想做什么?如果'min()'不代表'__builtins __。min()'人们会恨你。 –

回答

10

你想用functools.partial()

min_arg2 = functools.partial(min, key=itemgetter(1)) 

的文档见http://docs.python.org/library/functools.html

例子:

>>> import functools 
>>> from operator import itemgetter 
>>> min_arg2 = functools.partial(min, key=itemgetter(1)) 
>>> min_arg2(vals) 
('b', 0) 
+0

这就是我要找的。谢谢。 – Diego

+0

你在哪里定义vals? –

2

使用functools(如Duncan's answer)是一个更好的方法,但是你可以使用一个lambda expression,你只是没有得到语法正确:

min_arg2 = lambda p,q: min(p,q, key=itemgetter(1)) 
+0

谢谢,那个错误wasa错误,虽然functools.partial是我想要的。 – Diego