首頁 >後端開發 >Python教學 >如何在Python中創建高階函數?

如何在Python中創建高階函數?

PHPz
PHPz轉載
2023-09-05 19:29:051330瀏覽

如何在Python中創建高階函數?

在Python中,將另一個函數作為參數或將函數作為輸出傳回的函數稱為高階函數。讓我們來看看其特性 -

  • 該函數可以儲存在變數中。

  • 此函數可以當作參數傳遞給另一個函數。

  • 高階函數可以以列表、雜湊表等形式儲存

  • #函數可以從函數中傳回。

讓我們來看一些例子 −

函數作為物件

Example

的中文翻譯為:

範例

在這個例子中,這些函數被視為物件。在這裡,函數demo()被賦值給一個變數 -

# Creating a function
def demo(mystr):
   return mystr.swapcase() # swapping the case

print(demo('Thisisit!'))
sample = demo
print(sample('Hello'))

輸出

tHISISIT!
hELLO

將函數傳遞為參數

Example

的中文翻譯為:

範例

在此函數作為參數傳遞。 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!

現在,讓我們討論裝飾器。我們可以使用裝飾器作為高階函數。

Python中的裝飾器

Example

的中文翻譯為:

範例

在裝飾器中,函數被當作參數傳遞給另一個函數,然後在包裝函數中被呼叫。讓我們來看一個快速的例子 −

@mydecorator
def hello_decorator():
   print("This is sample text.")

上面也可以寫成 -

def demo_decorator():
   print("This is sample text.")
hello_decorator = mydecorator (demo_decorator)

裝飾器範例

Example

的中文翻譯為:

範例

在這個例子中,我們將把裝飾器當作高階函數來運作 -

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

Example

的中文翻譯為:

範例

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

應用語法裝飾器

Example

的中文翻譯為:

範例

可以使用帶有 @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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除