假設我有一個函數def foo(A, B)
。使用不同數量的變量傳遞函數
現在我有另一個功能bar(func)
,其中func
是一個函數,它只接受一個變量。我想通過foo
作爲func
,但第二個變量B
總是固定爲300.我該怎麼做?
假設我有一個函數def foo(A, B)
。使用不同數量的變量傳遞函數
現在我有另一個功能bar(func)
,其中func
是一個函數,它只接受一個變量。我想通過foo
作爲func
,但第二個變量B
總是固定爲300.我該怎麼做?
您使用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
。
LAMBDA是最容易的,但你也可以使用更復雜的情況functools.partial:
import functools
bar(functools.partial(foo, B=300))
搜索「部分應用程序」。 – Hyperboreus 2013-02-21 04:20:06