start—py(2、高阶函数)

本文介绍了高阶函数的概念及其应用,包括变量指向函数、map和reduce等函数式编程中常用的操作。通过实例说明了如何利用这些高级特性进行高效编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高阶函数,简单的写一些有关高阶函数的知识点
1.引子—变量可指向函数

变量f指向abs函数本身,直接调用abs()函数和调用变量f()完全相同。

2.高阶函数
变量可以指向函数,而函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
这里写图片描述
将函数作为作为参数传入,函数式编程就是指这种高度抽象的编程范式

3.map()函数
map()函数接收两个参数:一个是函数;另一个是Iterable。map将传入的函数依次作用到序列的每个元素,最后结果作为新的Iterator返回。
这里写图片描述

4.reduce()函数
reduce()函数接受两个参数,reduce把一个函数作用在一个序列[x1, x2, x3, …]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。
效果如下:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

注意:记得加上from functools import reduce,否则会显示reduce未被定义。

# ==================== 5. 函数的高级特性 ==================== """ 📚 高级特性: 1. 闭包:函数记住并访问创建环境的能力 2. 递归:函数调用自身 3. 装饰器:增强函数功能而不修改原代码 4. 高阶函数:接收函数作为参数或返回函数 """ # 示例1:递归函数 def factorial(n): """计算阶乘(递归实现) 参数: n (int) - 非负整数 返回: int - n的阶乘 """ if n < 0: # 处理负数输入 raise ValueError("阶乘只定义在非负整数") if n == 0: # 基本情况 return 1 return n * factorial(n - 1) # 递归调用 # 测试示例1 print("\n=== 示例1: 递归函数 ===") print("5! =", factorial(5)) # 120 # 示例2:装饰器 def log_execution_time(func): """记录函数执行时间的装饰器""" def wrapper(*args, **kwargs): import time start_time = time.time() # 记录开始时间 result = func(*args, **kwargs) # 调用原始函数 end_time = time.time() # 记录结束时间 elapsed = end_time - start_time # 计算耗时 print(f"{func.__name__} 执行时间: {elapsed:.6f}秒") return result return wrapper @log_execution_time # 应用装饰器 def process_large_data(size): """处理大量数据(模拟耗时操作)""" return sum(range(size)) # 计算累加和 # 测试示例2 print("\n=== 示例2: 装饰器 ===") process_large_data(1000000) # 调用被装饰的函数 # 示例3:高阶函数 def apply_operation(data, operation): """应用操作到数据集的每个元素 参数: data (list) - 数据列表 operation (function) - 要应用的函数 返回: list - 应用操作后的结果列表 """ return [operation(item) for item in data] # 列表推导式应用函数 # 测试示例3 print("\n=== 示例3: 高阶函数 ===") numbers = [1, 2, 3, 4, 5] squared = apply_operation(numbers, lambda x: x ** 2) # 应用平方函数 cubed = apply_operation(numbers, lambda x: x ** 3) # 应用立方函数 print("原始数据:", numbers) print("平方结果:", squared) print("立方结果:", cubed) 这里有个问题,第一个问题,没有把每个特性都讲清楚,第二问题,示例缺少,每一个特性至少两个代码示例,第三个问题,每一行都要有注释,按照我的要求,重新返回一个py文件
08-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值