2011-09-23 90 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