我有個問題:
我需要在 python 中實作一個函式,它列印一個引數的 skalar 倍數 - 引數是一個函式本身,它具有以下簽名:
def innerF(a,b):
return x
skalar 乘數是函式內的常數 - 例如
return 55 * x
現在是我似乎沒有得到的部分:呼叫 Sytanx 必須是:
print( outerF(innerF)(a,b))
所以總結一下
def innerF(a,b):
return a b
def outerF( #What goes here? ):
return 55* #How two call the innerF?
print(outerF(innerF)(a,b))
到目前為止我所知道的:
我可以將innerF和a,b作為單獨的引數傳遞給outerF,例如
def outerF(innerF,a,b): 回傳 53*innerF(a,b)
我沒有得到的:
innerF(outerF)(a,b)我完全不知道outerF 呼叫的簽名。我也找不到參考。
非常感謝您提前!
uj5u.com熱心網友回復:
outerF 需要回傳一個被呼叫的函式 (a, b)
def innerF(a, b):
return a b
def outerF(func):
# define a function to return
def f(*args, **kwargs):
# this just calls the given func & scales it
return 55 * func(*args, **kwargs)
return f
print(outerF(innerF)(1, 2))
結果:
165 # 55 * (1 2)
uj5u.com熱心網友回復:
所以你需要的是嵌套函式。
outerF(innerF)(a, b)
意味著outerF(innerF)回傳一個新函式,然后將a和b作為引數。
為此,您需要一個回傳函式的函式。
def inner(a, b):
return a b
def outer(func):
def wrapper(a, b):
55 * func(a, b)
return wrapper
outer(inner)(2, 3) # 275
您還可以將外部函式用作裝飾器。
@outer
def inner(a, b):
return a b
inner(2, 3) # 275
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/338415.html
上一篇:是否有Python函式可以從同一目錄中的一系列檔案夾中打開/提取檔案?
下一篇:如何從另一個函式回傳值
