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