- Python 教程
- Python 教程
- Python - 概述
- Python - 历史
- Python - 特性
- Python 与 C++
- Python - Hello World 程序
- Python - 应用领域
- Python 解释器及其模式
- Python - 环境设置
- Python - 虚拟环境
- Python - 基本语法
- Python - 变量
- Python - 数据类型
- Python - 类型转换
- Python - Unicode 系统
- Python - 文字
- Python - 运算符
- Python - 算术运算符
- Python - 比较运算符
- Python - 赋值运算符
- Python - 逻辑运算符
- Python - 按位运算符
- Python - 成员资格运算符
- Python - 身份运算符
- Python - 运算符优先级
- Python - 注释
- Python - 用户输入
- Python - 数字
- Python - 布尔值
- Python 控制语句
- Python - 控制流
- Python - 决策
- Python - if 语句
- Python - if-else 语句
- Python - 嵌套 if 语句
- Python - Match-Case 语句
- Python - 循环
- Python - For 循环
- Python for-else 循环
- Python - While 循环
- Python - break 语句
- Python - Continue 语句
- Python - pass 语句
- Python - 嵌套循环
- Python 函数和模块
- Python - 函数
- Python - 默认参数
- Python - 关键字参数
- Python - 仅关键字参数
- Python - 位置参数
- Python - 仅位置参数
- Python - 任意或可变长度参数
- Python - 变量范围
- Python - 函数注释
- Python - 模块
- Python - 内置函数
- Python 字符串
- Python - 字符串
- Python - 切片字符串
- Python - 修改字符串
- Python - 字符串连接
- Python - 字符串格式化
- Python - 转义字符
- Python - 字符串方法
- Python - 字符串练习
- Python 列表
- Python - 列表
- Python - 访问列表项
- Python - 更改列表项
- Python - 添加列表项
- Python - 删除列表项
- Python - 循环列表
- Python - 列表推导式
- Python - 排序列表
- Python - 复制列表
- Python - 联接列表
- Python - 列表方法
- Python - 列表练习
- Python 元组
- Python - 元组(Tuple )
- Python - 访问元组项
- Python - 更新元组
- Python - 解压缩元组项
- Python - 循环元组
- Python - 联接元组
- Python - 元组方法
- Python - 元组练习
- Python 集
- Python - 集(sets)
- Python - 访问 Set Items
- Python - 添加 Set Items
- Python - 删除 Set Items
- Python - 循环 Set Items
- Python - 联接 Sets
- Python - 复制 Set
- Python - Set 运算符
- Python - Set 方法
- Python - Set 的练习
- Python 字典
- Python - 字典
- Python - 访问字典项
- Python - 更改字典项
- Python - 添加字典项
- Python - 删除字典项
- Python - 字典视图对象
- Python - 循环字典
- Python - 复制字典
- Python - 嵌套字典
- Python - 字典方法
- Python - 字典练习
- Python 数组
- Python - 数组
- Python - 访问数组项
- Python - 添加数组项
- Python - 删除数组项
- Python - 循环数组
- Python - 复制数组
- Python - 反向数组
- Python - 对数组进行排序
- Python - 连接数组
- Python - 数组方法
- Python - 数组练习
- Python 文件处理
- Python - 文件处理
- Python - 写入文件
- Python - 读取文件
- Python - 重命名和删除文件
- Python - 目录
- Python - 文件方法
- Python OS 文件/目录方法
- Python - os.path 方法
- 面向对象编程
- Python - OOP 概念
- Python - 类和对象
- Python - 类属性
- Python - 类方法
- Python - 静态方法
- Python - 构造函数
- Python - 访问修饰符
- Python - 继承
- Python - 多态性
- Python - 方法覆盖
- Python - 方法重载
- Python - 动态绑定
- Python - 动态类型
- Python - 抽象
- Python - 封装
- Python - 接口
- Python - 软件包
- Python - 内部类
- Python - 匿名类和对象
- Python - 单例类
- Python - 包装类
- Python - 枚举
- Python - 反射
- Python 错误和异常
- Python - 语法错误
- Python - 异常处理
- Python - try-except 块
- Python - try-finally 块
- Python - 引发异常
- Python - 异常链接
- Python - 嵌套 try 块
- Python - 用户定义的异常
- Python - 日志记录
- Python - 断言
- Python - 内置异常
- Python 多线程
- Python - 多线程
- Python - 线程生命周期
- Python - 创建线程
- Python - 启动线程
- Python - 联接线程
- Python - 命名线程
- Python - 线程调度
- Python - 线程池
- Python - 主线程
- Python - 线程优先级
- Python - 守护程序线程
- Python - 同步线程
- Python 同步
- Python - 线程间通信
- Python - 线程死锁
- Python - 中断线程
- Python 网络
- Python - 网络编程
- Python - 套接字编程
- Python - URL 处理
- Python - 泛型
- Python 杂项
- Python - 日期和时间
- Python - math 模块
- Python - 迭代器
- Python - 生成器
- Python - 闭包(closures)
- Python - 装饰器( Decorators)
- Python - 递归
- Python - 正则表达式
- Python - PIP
- Python - 数据库访问
- Python - 弱引用
- Python - 序列化
- Python - 模板
- Python - 输出格式
- Python - 性能测量
- Python - 数据压缩
- Python - CGI 编程
- Python - XML 处理
- Python - GUI 编程
- Python - 命令行参数
- Python - 文档字符串
- Python - JSON
- Python - 发送电子邮件
- Python - 更多扩展
- Python - 工具/实用程序
- Python - 图形用户界面
- Python 高级概念
- Python - 抽象基类
- Python - 自定义异常
- Python - 高阶函数
- Python - 对象内部
- Python - 内存管理
- Python - 元类
- Python - 使用 Metaclasses 进行元编程
- Python - 模拟和存根
- Python - 猴子修补
- Python - 信号处理
- Python - 类型提示
- Python - 自动化教程
- Python - 人性化软件包
- Python - 上下文管理器
- Python - 协程
- Python - 描述符
- Python - 诊断和修复内存泄漏
- Python - 不可变数据结构
Python - 高阶函数
Python 中的高阶函数允许您操作函数以提高代码的灵活性和可重用性。您可以使用嵌套范围或可调用对象创建高阶函数。
此外,functools 模块提供了用于处理高阶函数的实用程序,从而可以更轻松地创建装饰器和其他函数操作结构。本教程将探讨 Python 中高阶函数的概念,并演示如何创建它们。
什么是高阶函数?
高阶函数是将一个或多个函数作为参数或返回函数作为其结果的函数。下面你可以观察 Python 中高阶函数的一些属性 -
- 函数可以存储在变量中。
- 一个函数可以作为参数传递给另一个函数。
- A 高阶函数可以以列表、哈希表等形式存储。
- 函数可以从函数返回。
要在 Python 中创建高阶函数,您可以使用嵌套范围或可调用对象。下面我们将简要讨论它们。
使用嵌套作用域创建高阶函数
在 Python 中定义高阶函数的一种方法是使用嵌套作用域。这涉及在另一个函数中定义一个函数并返回内部函数。
例让我们观察以下示例,了解如何在 Python 中创建高阶函数。在此示例中,multiplier 函数采用一个参数 a,并返回另一个函数 multiply,该函数计算值 a * b
def multiplier(a):
# Nested function with second number
def multiply(b):
# Multiplication of two numbers
return a * b
return multiply
# Assigning nested multiply function to a variable
multiply_second_number = multiplier(5)
# Using variable as high order function
Result = multiply_second_number(10)
# Printing result
print("Multiplication of Two numbers is: ", Result)
输出
在执行上述程序时,您将获得以下结果 -
使用可调用对象创建高阶函数
创建高阶函数的另一种方法是使用可调用对象。这涉及使用 __call__ 方法定义类。
例这是创建高阶函数的另一种方法是使用可调用对象。
class Multiplier:
def __init__(self, factor):
self.factor = factor
def __call__(self, x):
return self.factor * x
# Create an instance of the Multiplier class
multiply_second_number = Multiplier(2)
# Call the Multiplier object to computes factor * x
Result = multiply_second_number(100)
# Printing result
print("Multiplication of Two numbers is: ", Result)
输出
在执行上述程序时,您将获得以下结果 -
使用 'functools' 模块的高阶函数
functools 模块提供了作用于或返回其他函数的高阶函数。对于此模块,任何可调用对象都可以被视为函数。
使用 wraps() 处理高阶函数
在此示例中,my_decorator 是一个高阶函数,它使用 functools.wraps() 函数修改 invite 函数的行为。
import functools
def my_decorator(f):
@functools.wraps(f)
def wrapper(*args, **kwargs):
print("Calling", f.__name__)
return f(*args, **kwargs)
return wrapper
@my_decorator
def invite(name):
print(f"Welcome to, {name}!")
invite("qikepu")
输出
在执行上述程序时,您将获得以下结果 -
Welcome to, qikepu!
使用 partial() 处理高阶函数
functools 模块的 partial() 函数用于创建可调用的 'partial' 对象。此对象本身的行为类似于函数。partial() 函数接收另一个函数作为参数,并冻结函数参数的某些部分,从而生成具有简化签名的新对象。
例
在下面的示例中,通过在原始函数的其中一个参数上设置默认值,将用户定义的函数 myfunction() 用作部分函数的参数。
import functools
def myfunction(a,b):
return a*b
partfunction = functools.partial(myfunction,b = 10)
print(partfunction(10))
输出
在执行上述程序时,您将获得以下结果 -
使用 reduce() 处理高阶函数
与上述方法类似,functools 模块提供了 reduce() 函数,该函数接收两个参数,一个函数和一个可迭代对象。而且,它返回单个值。argument 函数从左到右累积应用列表中的两个参数。第一次调用中的函数结果成为第一个参数,列表中的第三项成为第二个参数。重复此操作,直到列表用尽。
例
import functools
def mult(x,y):
return x*y
# Define a number to calculate factorial
n = 4
num = functools.reduce(mult, range(1, n+1))
print (f'Factorial of {n}: ',num)
输出
在执行上述程序时,您将获得以下结果 -