Python 高阶函数

原文:https://www.javatpoint.com/python-high-order-function

因为我们必须了解 Python 函数的基本概念,所以我们应该继续讨论一些与 Python 函数相关的高级概念。在本教程中,我们将讨论 Python 中高阶函数的重要方面,例如什么是高阶函数,我们如何在 Python 中定义它们,如何在 Python 中使用它们,以及高阶函数的属性是什么。

先决条件:

要了解 Python 中的高阶函数,我们必须具备以下概念的基本知识:

  • Python 函数

  • Parameters

  • 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