簡體   English   中英

通過功能的功能作為參數

[英]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))將通過函數ba並導致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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM