📜  Python中的高阶函数

📅  最后修改于: 2022-05-13 01:55:44.946000             🧑  作者: Mango

Python中的高阶函数

如果一个函数包含其他函数作为参数或返回一个函数作为输出,则该函数称为函数函数,即与另一个函数一起操作的函数称为高阶函数。值得知道的是,这个高阶函数也适用于将函数作为参数或返回函数作为结果的函数和方法。 Python也支持高阶函数的概念。

高阶函数的性质:

  • 函数是 Object 类型的实例。
  • 您可以将函数存储在变量中。
  • 您可以将函数作为参数传递给另一个函数。
  • 您可以从函数。
  • 您可以将它们存储在数据结构中,例如哈希表、列表……

作为对象的函数

在Python中,可以将函数分配给变量。此分配不调用函数,而是创建对该函数的引用。考虑以下示例,以便更好地理解。

例子:

# Python program to illustrate functions 
# can be treated as objects 
def shout(text): 
    return text.upper() 
    
print(shout('Hello')) 
    
# Assigning function to a variable
yell = shout 
    
print(yell('Hello'))

输出:

HELLO
HELLO

在上面的例子中,一个函数对象被喊叫,并创建了第二个指向它的名字,叫喊。

将函数作为参数传递给其他函数

函数就像Python中的对象,因此,它们可以作为参数传递给其他函数。考虑下面的例子,我们创建了一个以函数作为参数的函数greet。

例子:

# Python program to illustrate functions 
# can be passed as arguments to other functions 
def shout(text): 
    return text.upper() 
    
def whisper(text): 
    return text.lower() 
    
def greet(func): 
    # storing the function in a variable 
    greeting = func("Hi, I am created by a function \
    passed as an argument.") 
    print(greeting)  
    
greet(shout) 
greet(whisper)

输出:

HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT.
hi, i am created by a function passed as an argument.

返回函数

由于函数是对象,我们也可以从另一个函数。在下面的示例中, create_adder函数返回 adder 函数。

例子:

# Python program to illustrate functions 
# Functions can return another function 
    
def create_adder(x): 
    def adder(y): 
        return x + y 
    
    return adder 
    
add_15 = create_adder(15) 
    
print(add_15(10))

输出:

25

装饰器

装饰器是Python中高阶函数最常见的用法。它允许程序员修改函数或类的行为。装饰器允许我们包装另一个函数以扩展被包装函数的行为,而无需永久修改它。在装饰器中,函数被作为参数传入另一个函数,然后在包装函数内部调用。

句法:

@gfg_decorator
def hello_decorator(): 
    .
    .
    .

上面的代码相当于——

def hello_decorator(): 
    .
    .
    .
      
hello_decorator = gfg_decorator(hello_decorator)

在上面的代码中, gfg_decorator是一个可调用函数,将在另一个可调用函数hello_decorator函数之上添加一些代码并返回包装函数。

例子:

# defining a decorator 
def hello_decorator(func): 
    
    # inner1 is a Wrapper function in  
    # which the argument is called 
        
    # inner function can access the outer local 
    # functions like in this case "func" 
    def inner1(): 
        print("Hello, this is before function execution") 
    
        # calling the actual function now 
        # inside the wrapper function. 
        func() 
    
        print("This is after function execution") 
            
    return inner1 
    
    
# defining a function, to be called inside wrapper 
def function_to_be_used(): 
    print("This is inside the function !!") 
    
    
# passing 'function_to_be_used' inside the 
# decorator to control its behavior 
function_to_be_used = hello_decorator(function_to_be_used) 
    
    
# calling the function 
function_to_be_used() 

输出:

Hello, this is before function execution
This is inside the function !!
This is after function execution

注意:有关更多信息,请参阅Python中的装饰器。