装饰器:装饰器为主,闭包和高阶函数为辅

简介: 装饰器:装饰器为主,闭包和高阶函数为辅

装饰器   =  高阶函数 +  闭包

1.什么是闭包;

# 闭包:就是不执行,等待调用状态
def fun():
    print("执行函数")
f = fun
print(type(f),f)
# <class 'function'> <function fun at 0x000002139B203438>

2.什么是高阶函数

#高阶函数:只要参数或者返回值是函数那么就是高阶函数
def fun1():
    pass
def superFun(fun):
    pass
fun = fun1
superFun(fun)

3.1基本装饰器

# 目的:在不改变源代码的前提下,添加功能
def beforFun(fun):
    def inner(*args,**kwargs):
        print(f"业务代码{args},{kwargs}")
        return fun(*args,**kwargs)
    return inner

@beforFun
def main(key):
    print("主函数")
main(6)

3.2带参数的装饰器

# 目的:在不改变源代码的前提下,添加功能
def HHHH(key):
    def beforFun(fun):
        def inner(*args, **kwargs):
            print(key)
            print(f"业务代码{args},{kwargs}")
            return fun(*args, **kwargs)
        return inner
    return beforFun

@HHHH("hhhhhh")
def main(a):
    print("主函数")
main(6)

4.如果要保留装饰器原函数 的基本属性

# 在装饰器中使用,保留原函数的属性,加上wraps
from functools import wraps
目录
打赏
0
4
4
0
100
分享
相关文章
由于安全风险,安全领导者考虑禁止用AI生成代码
由于安全风险,安全领导者考虑禁止用AI生成代码
详解 C 标准库 - <limits.h>
`&lt;limits.h&gt;` 是 C 标准库中的头文件,定义了各种基本数据类型的大小限制和特性,如 `CHAR_BIT`、`CHAR_MIN`、`CHAR_MAX` 等,涵盖了整数和字符类型的极限值。它提供了关键的宏常量,帮助程序员理解变量范围,确保代码的正确性和可移植性。
|
10月前
|
05 MongoDB对列的各种操作总结
文章总结了MongoDB中对字段(列)进行操作的方法,包括字段的添加、删除、重命名以及字段值的更新等实用技巧。
120 5
AI项目高昂成本与数据问题阻碍进展,2025年前30%的GenAI项目或将搁浅
AI项目高昂成本与数据问题阻碍进展,2025年前30%的GenAI项目或将搁浅
C 标准库 - <float.h>详解
`&lt;float.h&gt;` 是 C 标准库中的头文件,用于定义浮点数的属性和限制,包括有效数字位数(如 `FLT_DIG`)、最小最大值(如 `FLT_MIN` 和 `FLT_MAX`),以及特殊值(如 `FLT_INFINITY`)。它通过提供一系列常量和宏帮助程序员处理浮点运算的范围和精度问题。
|
10月前
|
Pinia 是如何实现状态共享的?
Pinia 是如何实现状态共享的?
223 4
|
10月前
|
C 标准库 - <errno.h>详解
`&lt;errno.h&gt;` 是 C 标准库中的错误处理头文件,定义了全局变量 `errno` 和一系列错误代码宏,如 `ENOMEM`(内存不足)、`EINVAL`(无效参数)等,用于检测和处理函数调用中的错误。在调用可能引发错误的函数前后应检查和清零 `errno` 以准确识别错误原因。
|
10月前
常见的请求状态码
常见的请求状态码
大模型、大数据与显示技术深度融合 加速智慧医疗多元化场景落地
大模型、大数据与显示技术深度融合 加速智慧医疗多元化场景落地

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等