如何在 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
广告