如何在 Python 中创建高阶函数?


在 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!

现在,让我们围绕装饰器进行操作。我们可以使用装饰器作为高阶函数。

Python 中的装饰器

示例

在装饰器中,函数被作为参数传入另一个函数,然后在包装器函数内部调用。让我们看一个简单的例子:

@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

应用语法装饰器

示例

上面的例子可以使用带有 @ 符号的装饰器进行简化。这可以通过在我们要装饰的函数之前放置 @ 符号来简化应用装饰器:

# 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

更新于: 2022-09-16

2K+ 浏览量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告