Python中函数作为参数的高阶函数demo

本文深入探讨了高阶函数的概念,展示了如何使用高阶函数来筛选列表中的元素,例如获取偶数或大于特定值的数字。通过具体的代码示例,解释了高阶函数的工作原理和应用场景。

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

# 高阶函数
# 接收函数作为参数,或者将函数作为返回值的函数是高阶函数
# 创建一个列表
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 定义一个高阶函数
def f(func, l):
    '''
    将指定列表中的所有数,按规则,保存到一个新的列表中
    :param l:
    :return:
    '''
    ls = []
    for res in l:
        if func(res):
            ls.append(res)
    return ls
def ou(i):
    '''
     将偶数返回
    '''
    return i % 2 == 0
def dy(i):
    '''
     将大于5的值返回
    '''
    return i > 5

 

当我们想得到列表中的偶数时

print(f(ou,l))
# 列表中为偶数的数为 [2, 4, 6, 8, 10]

当我们想得到列表中大于5的数

列表大于5的数有 [6, 7, 8, 9, 10]

 

<think>好的,用户的问题是关于Python中主函数和普通函数前的“运行符号”的含义。首先,我需要确定用户所指的“运行符号”具体是什么。根据提供的引用内容,特别是引用[3]提到了@符号作为函数装饰器的用法,这可能与用户的问题相关。 用户可能看到类似@uppercase_decorator这样的符号出现在函数定义前,想知道它们的含义。因此,我需要解释装饰器的作用,以及它们如何应用于主函数和普通函数。同时,需要区分主函数(通常是if __name__ == "__main__"块中的函数)和普通函数在装饰器使用上的异同。 另外,用户可能对如何自定义装饰器感兴趣,所以需要提到装饰器的基本结构,比如闭包函数参数传递。还要注意引用中的示例,如引用[1]中的uppercase_decorator,用来展示装饰器的实际应用。需要确保解释清晰,结构合理,并引用正确的资料来支持回答。 最后,根据用户的要求生成相关问题,这些问题应围绕装饰器的概念、使用方法和高级应用展开,帮助用户进一步学习。</think>在Python中,主函数和普通函数前出现的“运行符号”通常指函数装饰器(Decorator),其核心作用是动态修改函数或类的行为。具体说明如下: --- ### 一、装饰器符号的语法与含义 1. **符号形式**:通过`@装饰器名称`的语法直接放置在函数定义前 ```python @uppercase_decorator def demo(name): return "Hello, " + name ``` 2. **等价转换**:装饰器语法是语法糖,等价于: ```python def demo(name):... demo = uppercase_decorator(demo) ``` 3. **装饰器本质**:装饰器是一个接受函数作为参数高阶函数,通过闭包实现功能增强[^1][^3] --- ### 二、主函数与普通函数的应用差异 | 分类 | 装饰器应用场景 | 示例 | |-----------|----------------------------------|--------------------------------------------------------------------| | 普通函数 | 日志记录、权限校验、性能分析等 | `@log_execution_time` 记录函数执行时间 | | 主函数(`if __name__ == "__main__"`) | 通常不直接装饰主函数,而是装饰主函数调用的子函数 | 主函数内调用被装饰的普通函数:`@config_loader`加载配置后再执行主逻辑[^5] | --- ### 三、自定义装饰器开发步骤 1. **定义闭包结构**: ```python def my_decorator(func): def wrapper(*args, **kwargs): # 支持任意参数 # 前置处理(如参数校验) result = func(*args, **kwargs) # 后置处理(如结果格式化) return result return wrapper ``` 2. **参数化装饰器**(需嵌套定义): ```python def repeat(n_times): def decorator(func): def wrapper(*args, **kwargs): for _ in range(n_times): result = func(*args, **kwargs) return result return wrapper return decorator @repeat(3) def greet(): print("Hello") ``` --- ### 四、典型应用场景 1. **功能增强**:如引用[1]中的`@uppercase_decorator`将输出转为大写 2. **参数约束**:结合引用[2]的参数规范,装饰器可强制参数传递方式 3. **资源管理**:数据库连接自动开闭、文件操作上下文管理 4. **调试工具**:性能分析、调用链追踪 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值