在Python中,將另一個函數作為參數或將函數作為輸出傳回的函數稱為高階函數。讓我們來看看其特性 -
該函數可以儲存在變數中。
此函數可以當作參數傳遞給另一個函數。
高階函數可以以列表、雜湊表等形式儲存
#函數可以從函數中傳回。
讓我們來看一些例子 −
在這個例子中,這些函數被視為物件。在這裡,函數demo()被賦值給一個變數 -
# Creating a function def demo(mystr): return mystr.swapcase() # swapping the case print(demo('Thisisit!')) sample = demo print(sample('Hello'))
tHISISIT! hELLO
在此函數作為參數傳遞。 demo3() 函數呼叫 demo() 和 demo2() 函數作為參數。
def demo(text): return text.swapcase() def demo2(text): return text.capitalize() def demo3(func): res = func("This is it!") # Function passed as an argument print (res) # Calling demo3(demo) demo3(demo2)
tHIS IS IT! This is it!
現在,讓我們討論裝飾器。我們可以使用裝飾器作為高階函數。
在裝飾器中,函數被當作參數傳遞給另一個函數,然後在包裝函數中被呼叫。讓我們來看一個快速的例子 −
@mydecorator def hello_decorator(): print("This is sample text.")
上面也可以寫成 -
def demo_decorator(): print("This is sample text.") hello_decorator = mydecorator (demo_decorator)
在這個例子中,我們將把裝飾器當作高階函數來運作 -
def demoFunc(x,y): print("Sum = ",x+y) # outer function def outerFunc(sample): def innerFunc(x,y): # inner function return sample(x,y) return innerFunc # calling demoFunc2 = outerFunc(demoFunc) demoFunc2(10, 20)
Sum = 30
def demoFunc(x,y): print("Sum = ",x+y) # outer function def outerFunc(sample): def innerFunc(x,y): # inner function return sample(x,y) return innerFunc # calling demoFunc2 = outerFunc(demoFunc) demoFunc2(10, 20)
Sum = 30
可以使用帶有 @symbol 的裝飾器來簡化上面的範例。透過在我們想要裝飾的函數之前放置 @ 符號,可以簡化裝飾器的應用 -
# outer function def outerFunc(sample): def innerFunc(x,y): # inner function return sample(x,y) return innerFunc @outerFunc def demoFunc(x,y): print("Sum = ",x+y) demoFunc(10,20)
Sum = 30
以上是如何在Python中創建高階函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!