怎样在Python中创建高阶函数?
在Python中,将一个函数作为另一个函数的参数或将一个函数作为输出返回的函数称为高阶函数。让我们看看高阶函数的特性:
- 该函数可以被存储在变量中。
-
该函数可以作为参数传递给另一个函数。
-
高阶函数可以以列表、哈希表等形式存储。
-
函数可以从函数中返回。
让我们看一些例子:
将函数作为对象使用
例子
该例子中函数被视为对象。这里,将函数demo()赋值给一个变量 –
#创建一个函数
def demo(mystr):
return mystr.swapcase() #交换大小写
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!") #将函数作为参数传递
print (res)
#调用
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)
# 外部函数
def outerFunc(sample):
def innerFunc(x,y): # 内部函数
return sample(x,y)
return innerFunc
# 调用
demoFunc2 = outerFunc(demoFunc)
demoFunc2(10, 20)
输出
Sum = 30
示例
def demoFunc(x,y):
print("Sum = ",x+y)
# 外部函数
def outerFunc(sample):
def innerFunc(x,y): # 内部函数
return sample(x,y)
return innerFunc
# 调用
demoFunc2 = outerFunc(demoFunc)
demoFunc2(10, 20)
输出
Sum = 30
应用句法装饰器
示例
可以使用带有@符号的装饰器简化上述示例。 这将使应用装饰器变得容易,只需在要装饰的函数之前加上@符号即可:
# 外部函数
def outerFunc(sample):
def innerFunc(x,y): # 内部函数
return sample(x,y)
return innerFunc
@outerFunc
def demoFunc(x,y):
print("Sum = ",x+y)
demoFunc(10,20)
输出
Sum = 30