Python高阶函数

Python高阶函数

当我们了解了Python函数的基本概念后,我们可以继续学习与Python函数相关的一些高级概念。在本教程中,我们将讨论Python高阶函数的重要方面,比如高阶函数是什么,如何在Python中定义它们,如何使用它们以及高阶函数的特性。

前提条件

要了解Python中的高阶函数,我们必须对以下概念有基本的了解:

  • Python函数
  • 参数
  • Python对象
  • Python装饰器

首先,让我们从第一件事开始,即高阶函数,并对其进行基本理解。

高阶函数

将另一个函数作为参数或将另一个函数作为返回值返回的函数称为高阶函数。高阶函数与程序中给定的其他函数一起工作。

关于高阶函数的一个事实是,高阶函数既可以适用于函数,也可以适用于以函数作为其参数或以函数作为其结果的方法。在Python中,这种高阶函数的概念在每个方面都得到支持。

Python中高阶函数的特性

现在,在本节中,我们将讨论一些适用于Python的高阶函数的重要特性。

  • 在高阶函数中,我们可以将一个函数存储在一个变量中。
  • 在高阶函数中,函数可以充当对象类型的实例。
  • 在高阶函数中,我们可以将一个函数作为另一个函数的结果返回。
  • 在高阶函数中,我们可以将一个函数作为参数或参数传递给另一个函数。
  • 我们可以将Python高阶函数存储在诸如列表、哈希表等数据结构格式中。

Python中的高阶函数

现在,在本节中,我们将具体讨论Python中的高阶函数以及如何定义它们。我们将讨论定义和使用高阶函数的方法和手段。

以下是在Python代码中定义高阶函数的方法,我们将在本教程中讨论它们。

  1. 在高阶函数中将函数作为对象使用
  2. 在高阶函数中将函数作为结果返回
  3. 将函数作为另一个函数的参数
  4. 装饰器作为高阶函数

现在,我们将详细讨论上述每种方法,并学习它们在Python程序中作为高阶函数的实现。

方法1:在高阶函数中将函数作为对象使用

在Python中,我们甚至可以将给定的函数分配给一个变量。将函数分配给变量将不会调用实际的函数,而是会创建对该函数的引用。因此,这种将函数分配为变量对象的赋值将在程序中创建一个高阶函数。

看下面的示例程序,了解我们讨论的方法的实现:

示例

# a default function to take another function parameter
def spell(text):
    # Making text in upper
    return text.upper() 
# Taking text as user input
text = input("Enter a text to print it in uppercase and double: ")
# Spell function with text
print(spell(text)) 
# Assigning variable with the default function
scream = spell
# Scream with text variable
print(scream(text))

输出:

Enter a text to print it in uppercase and double: JavaTPoint
JAVATPOINT
JAVATPOINT

方法2:将函数作为另一个函数的参数

基本上,Python函数就像Python对象一样,因此我们可以使用Python函数将其作为参数传递到另一个函数中,这将在程序中创建一个高阶函数。

看一下以下程序,了解上述方法的实现:

示例

# Default function for making text uppercase
def scream(word): 
    return word.upper() 
# Default function for making text lowercase
def spell(word): 
    return word.lower() 
# A third function that work as a high order function
def speak(funct): 
    # Storing the function in a variable in high order function 
    speaking = funct("Hello Python Developers! You are welcomed to JavaTpoint") 
    print(speaking)  
# Printing text in uppercase
speak(scream)
# Printing text in lowercase
speak(spell)

输出:

HELLO PYTHON DEVELOPERS! YOU ARE WELCOMED TO JAVATPOINT
hello python developers! you are welcomed to javatpoint

方法3:将函数作为高阶函数的返回结果

我们还可以将一个函数作为另一个函数的返回结果,作为一个对象返回,这会使这个函数成为一个高阶函数。

请看下面的示例程序,了解我们上面讨论的方法的实现:

示例

# A default function for addition
def Adding(a):
    # Nested function with second number 
    def Addition(b): 
            return a + b # addition of two numbers
    return Addition # Result

# Taking both number variable as user input
a = int(input("Enter First Number: "))
b = int(input("Enter Second Number: "))
# Assigning nested adding function to a variable
AddVariable = Adding(a)
# Using variable as high order function
Result = AddVariable(b)
# Printing result
print("Sum of Two numbers given by you is: ", Result)

输出:

Enter First Number: 24
Enter Second Number: 26
Sum of Two numbers given by you is:  50

方法4:将装饰器作为高阶函数

我们可以将装饰器作为高阶函数使用,这是Python中最常用的高阶函数。在Python中,装饰器允许我们修改程序中定义的方法或函数的行为,并且还允许我们将一个函数包装在另一个函数中,以扩展被包装或父函数的行为。我们甚至可以在不永久修改父函数的情况下将一个函数包装在另一个函数中。

在Python装饰器中,一个函数被作为另一个函数的参数,并且这些装饰器在被包装的函数内部被调用。看一下以下示例语法,这是在Python程序中定义装饰器时使用的。

语法

# Using a decorator
@JTP_Decorator
def Python_Decorator(): 
    .
    .

上述装饰器的语法相当于以下Python代码表示高阶函数。

# Using Python default function as Python decorators
def Python_Decorator(): 
    .
    .
Python_Decorator = @JTP_Decorator(Python_Decorator)

我们在上面给出的代码中将@JTP_Decorator引用为一个可调用函数,并将其放入默认的Python_Decorator()函数中。我们只需要在这个结构中添加一些额外的代码,我们就能得到输出作为包装函数。

看下面的程序以了解上述方法的实现:

示例

# Using default function as Python decorators
def Python_Decorator(funct):
       # Inner nested function
       def inner(): 
              print("This line of code will be printed before the execution of high order function")
              funct() 
              print("This line of code will be printed after the execution of high order function")
       return inner 
# A default function as decorator
def JTP_Decorator(): 
    print("This line of code will be printed inside the execution of high order function")
JTP_Decorator = Python_Decorator(JTP_Decorator) # Python decorator as high order function 
# Python decorator calling out as high order function 
JTP_Decorator()

输出:

This line of code will be printed before the execution of high order function
This line of code will be printed inside the execution of high order function
This line of code will be printed after the execution of high order function

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程