[英]Pass function of function as parameter
我知道如何將簡單函數作為參數傳遞給另一個函數-但是如何傳遞“嵌套”函數? 我正在嘗試做這樣的事情:
def do(func):
print (func(6))
def a(x):
return x*2
def b(x):
return x*3
do(a(b))
使用函數組合的方法:
def compose(f, g):
return lambda x: f(g(x))
def do(func):
print (func(6))
def a(x):
return x*2
def b(x):
return x*3
combinedAB = compose(a,b)
do(combinedAB)
那么這里的主要問題是, do(a(b))
將通過函數b
在a
並導致TypeError
。
這里的主要問題是,傳遞給函數的任何do
都必須是可調用的 ,否則出於適當的原因(缺少__call__
方法), print(func(6))
語句將失敗,因此我不認為這種方式結構化適合您的工作。
作為解決方案,您可以執行@Doorknob建議的操作(實質上是傳遞可調用的內容),也可以考慮從函數a
返回函數b
,然后將其用於函數do
。
所以,如果你改變功能a
像這樣:
def do(func):
print (func(6))
def a(x):
x = x * 2
def b(y):
return x * (y * 3)
return b
do(a(2))
您會得到一個不錯的結果72
。 即使我不確定這是否完全是您所說的“嵌套”功能的意思。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.