2013-02-21 45 views
1

假設我有一個函數def foo(A, B)使用不同數量的變量傳遞函數

現在我有另一個功能bar(func),其中func是一個函數,它只接受一個變量。我想通過foo作爲func,但第二個變量B總是固定爲300.我該怎麼做?

+0

搜索「部分應用程序」。 – Hyperboreus 2013-02-21 04:20:06

回答

3

您使用lambda

bar(lambda x: foo(x,300)) 

基本上,

func = lambda x: x*x 

是或多或少相當於:

def func(x): 
    return x*x 

所以在這種情況下,我們使用的東西或多或少相當於:

def new_func(x): 
    return foo(x,300) 

然後我們將new_func的等價物傳遞給bar

2

LAMBDA是最容易的,但你也可以使用更復雜的情況functools.partial:

import functools 

bar(functools.partial(foo, B=300))