python高级 之(二) --- 类装饰器

 装饰器-初级

  在不改变原有函数逻辑功能的基础上,为函数添加新的逻辑功能。使代码可读性更高、结构更加清晰、冗余度更低

  • 简介
 1 """
 2 闭包:  函数嵌套的格式就是闭包。写装饰器的闭包是外层函数的返回值就是内层函数
 3 装饰器:一种特殊的闭包 加上 语法糖[@语法]组成的
 4 其作用:在不修改原有功能的基础上,为该功能添加其他新的需求。不管在函数中添加多少装饰,函数的名字没有变化
 5 
 6 在函数中的使用
 7     装饰器的特殊闭包:在外层函数中声明一个内层函数,外等函数的返回值是内层函数
 8     外层函数的参数是:func 接受是给哪一个函数添加装饰
 9         def out(func):   给nomal函数装饰时,此时 func === nomal()  |   给diff函数装饰时,此时 func === diff()
10             def inner():
11                 pass     装饰器的新增功能是 写在内层函数中的,写在外层函数没有效果
12             return inner
13 
14     需添加装饰的函数:在普通函数添加装饰器的语法糖,@特殊闭包的外层函数名
15         @out
16         def nomal():
17             pass
18         @out
19         def diff()
20             pass
21 """
22 # 特殊的闭包
23 def outter():
24     print("这是一个外部函数")
25     def inner():
26         # 装饰器的新增功能是 写在内层函数中的
27         print("这是一个内部函数")
28     return inner    # 外部函数的返回值是内部函数
29 res = outter()
30 print('res =',res)  # res指向的是内部函数的内存地址。
31 # 执行结果:这是一个外部函数 res = <function outter.<locals>.inner at 0x1027e88c8>
32 res() 
33 # 执行结果 :这是一个内部函数。 调用res函数等价于 在outter内部直接调用innner函数
34 
35 """======================================================================"""
  • 实例
 1 # 在不改变原有函数的基础上,为函数增加新的功能。
 2 
 3 # 装饰器的闭包,实现功能是:新增计算该功能函数的执行时间
 4 def get_time(func): #  func的作用是 明确为哪一个函数添加装饰器;为哪个函数添加就代表哪一个函数
 5     def inner():
 6         import time
 7         start_time = time.time()
 8         # 执行被装饰的功能函数
 9         func()
10         end_time = time.time()
11         print("消耗的时间为:",end_time - start_time)
12     return inner
13 
14 @get_time
15 def print_table():
16     for row in range(1,10):
17         for col in range(1,row + 1):
18             print(col, "*" ,row, "=", row*col, end="\t")
19         print()
20 
21 # 不管给该功能函数添加了多少装饰,执行的时候还是调用该函数的名字
22 print_table()
 1 """
 2 1 * 1 = 1    
 3 1 * 2 = 2    2 * 2 = 4    
 4 1 * 3 = 3    2 * 3 = 6    3 * 3 = 9    
 5 1 * 4 = 4    2 * 4 = 8    3 * 4 = 12    4 * 4 = 16    
 6 1 * 5 = 5    2 * 5 = 10    3 * 5 = 15    4 * 5 = 20    5 * 5 = 25    
 7 1 * 6 = 6    2 * 6 = 12    3 * 6 = 18    4 * 6 = 24    5 * 6 = 30    6 * 6 = 36    
 8 1 * 7 = 7    2 * 7 = 14    3 * 7 = 21    4 * 7 = 28    5 * 7 = 35    6 * 7 = 42    7 * 7 = 49    
 9 1 * 8 = 8    2 * 8 = 16    3 * 8 = 24    4 * 8 = 32    5 * 8 = 40    6 * 8 = 48    7 * 8 = 56    8 * 8 = 64    
10 1 * 9 = 9    2 * 9 = 18    3 * 9 = 27    4 * 9 = 36    5 * 9 = 45    6 * 9 = 54    7 * 9 = 63    8 * 9 = 72    9 * 9 = 81    
11 消耗的时间为: 0.0011630058288574219
12 """
 1 # 在不改变原有函数的基础上,为函数增加新的功能。
 2 
 3 # 装饰器的闭包,实现功能是:新增计算该功能函数的执行时间
 4 def get_time(func):   # func的作用是明确给哪一个函数添加装饰器
 5     def inner():
 6         import time
 7         start_time = time.time()
 8         # 执行被装饰的功能函数
 9         func()
10         end_time = time.time()
11         print("消耗的时间为:",end_time - start_time)
12     return inner
13 
14 """九九乘法表"""
15 @get_time
16 def print_table():
17     for row in range(1,10):
18         for col in range(1,row + 1):
19             print(col, "*" ,row, "=", row*col, end="\t")
20         print()
21 # 不管给该功能函数添加了多少装饰,执行的时候还是调用该函数的名字
22 print_table()
23 """九九加法表"""
24 @get_time
25 def print_add_table():
26     for row in range(1,10):
27         for col in range(1,row + 1):
28             print(col, "+" ,row, "=", row+col, end="\t")
29         print()
30 print_add_table()
多个函数添加同一个装饰器 

装饰器的执行流程

  • 基本流程
 1 def get_time(func):   # func的作用是明确给哪一个函数添加装饰器
 2     print("这是装饰器的外层函数。在添加@语法糖时执行,且只会被执行一次")
 3     def inner():
 4         import time
 5         start_time = time.time()
 6         func()    # 执行被装饰的功能函数
 7         end_time = time.time()
 8         print("消耗的时间为:",end_time - start_time)
 9     return inner
10 """九九加法表"""
11 @get_time
12 def print_add_table():
13     for row in range(1,10):
14         for col in range(1,row + 1):
15             print(col, "+" ,row, "=", row+col, end="\t")
16         print()
17 print_add_table()
18 print_add_table() # 无论调用几次被装饰的函数,装饰器的外层函数只会被执行一次
19 """
20 为什么在装饰器中增加的新功能要在内层函数中添加?
21     因为在装饰器函数中 无论调用几次被装饰的函数,
22     装饰器外层函数的语句只会被执行一次,
23     第二次调用被装饰函数时不会执行装饰器外层函数语句
24     
25 当语法糖添加装饰器的时候,内部执行流程:
26     1。当使用语法糖给当前函数添加装饰器的时候[添加@时],装饰器特殊闭包的外层函数就已经被调用执行了
27        注意:外层函数的执行会有一个结果的返回,这个结果就是其中的内层函数
28        
29     2。为哪一个功能函数添加的装饰器 就使用该功能函数名字作为变量名,用于接收外层函数执行的返回结果(即内层函数)
30        此时 print_add_table = get_time(print_add_table) # 装饰器函数的参数 是 被装饰的函数
31        
32     3。现在此时 print_add_table 代表的是:装饰器特殊闭包中的内层函数;装饰器的参数func 代表的是被装饰的方法函数
33 """
  • 装饰器的完善
 1 def get_time(func):          # func的作用是明确给哪一个函数添加装饰器
 2     def inner(*values,**kwargs):      # 带参数的功能函数添加装饰器 所传的值
 3         import time
 4         start_time = time.time()
 5         res = func(*values,**kwargs)  # 执行被装饰的功能函数; values 传的参数
 6         end_time = time.time()
 7         print("消耗的时间为:",end_time - start_time)
 8         return res
 9     return inner
10 """
11 计算两个数求和功能的执行时间。即带参数的功能函数 添加装饰器
12 """
13 @get_time
14 def add(a,b):
15     return a + b
16 res = add(12,34)
17 print(res)
 1 def one_oper(func):
 2     flag = False  # 设置一个标记位。让装饰器只能返回一次结果
 3     def inner(*value,**kwargs):
 4         nonlocal flag
 5         if not flag:
 6             res = func(*value,**kwargs)
 7             flag = True
 8             return res
 9         return None
10     return inner
11 @one_oper
12 def add(a,b):
13     return a + b
14 
15 
16 res = add(12,34)
17 print(res) # 结果:46
18 res = add(34,12)
19 print(res) # 结果:None
唯一输出

 多个装饰器的执行流程

  • 代码
 1 """
 2 一个装饰器可以装饰多个功能函数
 3 一个功能函数可以被多个装饰器装饰 执行顺序采用就近原则执行[先执行距离被装饰函数近的]
 4 """
 5 
 6 def outer1(func):
 7     print("这是第一个装饰器的外部函数")
 8     def inner1(*value,**kwargs):
 9         print("第一个装饰器的内部函数")
10         res = func(*value,**kwargs)
11         if res != None:
12             return res
13     return inner1
14 def outer2(func):
15     print("这是第二个装饰器的外部函数")
16     def inner2(*value,**kwargs):
17         print("第二个装饰器的内部函数")
18         res = func(*value,**kwargs)
19         if res != None:
20             return res
21     return inner2
22 def outer3(func):
23     print("这是第三个装饰器的外部函数")
24     def inner3(*value,**kwargs):
25         print("第三个装饰器的内部函数")
26         res = func(*value,**kwargs)
27         if res != None:
28             return res
29     return inner3
30 
31 @outer1
32 @outer2
33 @outer3
34 def show():
35     print("演示添加多个装饰器的功能")
36     # 被添加装饰器的功能函数只会被执行一次,而且是在最后才执行
37 show()
  • 结果
 1 """
 2  执行结果:
 3     这是第三个装饰器的外部函数
 4     这是第二个装饰器的外部函数
 5     这是第一个装饰器的外部函数
 6     第一个装饰器的内部函数
 7     第二个装饰器的内部函数
 8     第三个装饰器的内部函数
 9     演示添加多个装饰器的功能
10  执行流程:
11     @outer3 此时执行outer3外层函数
12         ---> show = outer3(show)
13         show === inner3此内部函数
14     @outer2 此时执行outer2外层函数
15         ---> show = outer2(show)[注意:执行上一个装饰器的时候,show已经被更改数据了]
16              此时型参func=show=innner3  当作实际参数传递给show ===> 即上一个inner3
17         这个时候被赋值的变量show又拥有了新值 inner2
18     @outer1
19         ---> show = outer1(show)[注意:执行上一个装饰器的时候,show已经被更改数据了]
20              此时型参func=show=innner2  当作实际参数传递给show ===> 即上一个inner2
21         这个时候被赋值的变量show又拥有了新值 inner1
22     
23     所有的装饰器走完之后,此时的show === inner1
24         inner1执行完后,此时的show === inner2
25         inner2执行完后,此时的show === inner3
26         inner3执行完后,此时的show === 被装饰的功能函数
27 """



装饰器-进阶

带参数的函数装饰器

  之前的例子中装饰器是不能接收参数的,其用法只能适用于一些简单的场景。不传参的装饰器,只能对被装饰函数执行固定逻辑。

  装饰器本身就是一个函数,不传参数的装饰器,只能对被装饰的函数执行固定的逻辑,会大大限制其能力。

  若要用两个内容大体一致,但是某些地方不同的逻辑,若不能传参数的话,就需要写两个装饰器。

 1 # 装饰器实现传参需要两层嵌套
 2 def say_hello(contry):  # 外层函数的型参 接收 装饰器传来的实参
 3     def wrapper(func):  # 中层函数的型参 接收 被添加装饰器函数
 4         def deco(*args, **kwargs):  # 内层函数的型参 接收 被添加装饰器的带参数功能函数所传的实参
 5             if contry == "china":
 6                 print("你好!")
 7             elif contry == "america":
 8                 print('hello.')
 9             else:
10                 return
11             func(*args, **kwargs)   # 真正执行函数的地方。
12         return deco
13     return wrapper
14 
15 @say_hello("america")
16 def american():
17     print("I am from America。")
18 @say_hello("china")
19 def chinese():
20     print("我来自中国。")
21 
22 american()
23 chinese()
24 """
25 结果:
26     hello.
27     I am from America。
28     你好!
29     我来自中国。
30 """



装饰器-高级

不带参数的类装饰器

 1 """
 2 基于类实现的装饰器,需要两个类方法来实现
 3     __init__ : 接收被装饰的函数
 4     __call__ : 实现装饰器的逻辑
 5 """
 6 class Text(object):
 7     def __init__(self, func):            # 接收被装饰的函数
 8         self.func = func
 9     def __call__(self, *args, **kwargs): # 实现装饰器的逻辑
10         print("正在被装饰的函数是:{func}".format(func=self.func.__name__))
11         return self.func(*args, **kwargs)
12 @Text
13 def func(something):
14     print("函数的参数是:{}!".format(something))
15 
16 func("hello")
17 """
18 结果:
19     正在被装饰的函数是:func
20     函数的参数是:hello!
21 """

带有参数的类装饰器

 1 """
 2 带参数的类装饰器
 3     __init__ :不再接收被装饰的函数,而是接收传入的参数。
 4     __call__ :接收被装饰函数,实现装饰逻辑。
 5 """
 6 class logger(object):
 7     def __init__(self, level='INFO'):  # 接收装饰器传入的参数
 8         self.level = level
 9     def __call__(self, func):          # 接受被装饰的函数
10         def wrapper(*args, **kwargs):
11             print("[{level}]: the function {func}() is running..."\
12               .format(level=self.level, func=func.__name__))
13             func(*args, **kwargs)      # 真正执行被装饰的函数的语句
14         return wrapper                 # 返回内层函数
15 
16 @logger(level='WARNING')
17 def say(something):
18     print("say {}!".format(something))
19 say("hello")
20 @logger(level='DEBUG')
21 def say(something):
22     print("say {}!".format(something))
23 say("hello")
24 """
25 结果: 
26     [WARNING]: the function say() is running...
27     say hello!
28     [DEBUG]: the function say() is running...
29     say hello!
30 """



系统提供的装饰器

  Python语言本身提供的property内建装饰器,通常存在于类中的方法属性化。详情见 类的方法属性化 笔记整理

 1 """
 2 Python语言本身提供的property内建装饰器,通常存在于类中的方法属性化
 3 可以将一个方法函数定义成一个属性,属性的值就是该函数return的内容。
 4 """
 5 # 用@property装饰过的函数,会将一个函数定义成一个属性,属性的值就是该函数return的内容。即方法属性化
 6 class Student(object):
 7     def __init__(self, name):
 8         self.name = name
 9         self.name = None
10     @property
11     def age(self):
12         return self._age
13     @age.setter
14     def age(self, value):
15         if not isinstance(value, int):
16             raise ValueError('输入不合法:年龄必须为数值!')
17         if not 0 < value < 100:
18             raise ValueError('输入不合法:年龄范围必须0-100')
19         self._age=value
20     @age.deleter
21     def age(self):
22         del self._age
23 XiaoMing = Student("小明")
24 
25 # 设置属性
26 XiaoMing.age = 25
27 # 查询属性
28 age = XiaoMing.age
29 print(age)
30 # 删除属性。删除后再去查询该属性就会报错
31 del XiaoMing.age
32 age = XiaoMing.age
33 print(age)

 

转载于:https://www.cnblogs.com/TMMM/p/11395710.html

Python装饰器:从入门到精通 - 全面掌握Python类和装饰器的终极指南 想要成为Python高手?掌握装饰器是必经之路!本文将带你深入理解Python装饰器的精髓,从基础概念到高级应用,全方位提升你的Python编程技能。装饰器(Decorator)是Python中一个极其强大的特性,从Python 2.4版本开始引入,并在后续版本中不断完善和增强。它让我们能够优雅地修改或扩展函数和类的行为,而无需改变其源代码。 2.2 内置装饰器 Python提供了几个强大的内置装饰器:类装饰器是Python面向对象编程中的重要工具,它们能够改变类方法的行为和访问方式。以下是类中常用装饰器的 阅读详情

相关推荐

【Python】新手入门:什么是python装饰器?如何使用python装饰器?什么是python类装饰器?什么是python内置装饰器?

Python装饰器是一种高级功能,能够在不修改原代码的情况下动态增强函数或类的行为。其核心原理是通过嵌套函数包装目标函数,在调用前后添加额外逻辑,例如日志记录、性能分析或权限控制。装饰器语法简洁,使用@符号即可快速应用。它支持参数传递,也能通过多层嵌套实现复杂功能。此外,装饰器不仅适用于函数,还能扩展类功能,如实现单例模式或属性管理。内置装饰器如静态方法和类方法进一步简化了代码结构。这种设计模式显著提升了代码复用性和可维护性,是Python编程中极具特色的重要特性。

专注Python编程与网络安全领域,分享原创技术文章与靶机渗透实战经验。以清晰的逻辑解构复杂技术,用深入浅出的笔触呈现:从Python基础到高级特性,从漏洞原理到攻防实践。在这里,代码与安全交织,思考与成长同行。 1397

Python装饰器语法进阶

装饰器进阶与高级应用。

weixin_37780776的博客 909

【深度剖析】Python 装饰器:从入门到精通,掌握高级编程技巧

本文系统介绍了Python装饰器的核心概念与应用。装饰器是一种在不修改原函数代码的情况下增强函数功能的语法特性,基于Python函数作为一等公民的特性实现。文章详细讲解了简单装饰器、带参装饰器、类装饰器的实现方法,并演示了装饰器链和元信息保留技巧。装饰器在日志记录、性能分析、权限验证等场景有广泛应用,文中还提供了缓存装饰器的具体实现。最后总结了装饰器的常见陷阱(如执行时机、元信息丢失)和最佳实践(单一职责、文档规范、避免过度使用)。掌握装饰器能显著提升代码复用性和可维护性,是Python高级编程的重要技能。

2503_91057718的博客 1123

洗礼灵魂,修炼python(30)--装饰器(2)—>装饰器总结+进阶使用

在上一篇博文的经典案例中,我想你应该对装饰器有很好的了解了,不过光有那些还不够真的,还需要总结和进阶一下,所以本篇博文解析装饰器进阶。 装饰器 1.什么是装饰器? 个人理解:装饰器又叫语法糖,指的是对原程序内部整个代码不作任何更改,在外部写好一个带某种功能的程序来作用于原程序,对其进行修饰或者叫装饰,这就是装饰器。 还有两种理解是: 1).在代码运行期间动态增加功能的方式...

dingyu6453的博客 124

差分隐私(Differential Privacy)

差分隐私,拉普拉斯机制和高斯机制的证明

Michale_L的博客 1万+

RT-DETR改进策略【损失函数篇】| 2024 引进Focaler-IoU损失函数 加强边界框回归 (Focaler-DIoU、Focaler-GIoU、Focaler-CIoU等)

本文记录的是改进RT-DETR的损失函数,将其替换成。现有研究通过利用边界框之间的几何关系来提高回归性能,但忽略了困难样本和简单样本分布对边界框回归的影响。不同检测任务中困难样本和简单样本的分布不同,对于简单样本占主导的检测任务,关注简单样本的边界框回归有助于提高检测性能;对于困难样本比例较高的检测任务,需要关注困难样本的边界框回归。,提高检测器在不同检测任务中的性能。实现的。

Limiiiing的博客 1922

python装饰器的几个进阶用法

在之前的博客《一篇文章汇总Python装饰器全知识图谱(使用场景,基本用法,参数传递,闭包操作,类装饰器和AOP)》中,装饰器的基本使用都涵盖到了,不过继续深入还是有一些细枝末节可以继续讨论的,下面让我们用实例来看看装饰的几个进阶使用。 文章目录类装饰器带参数的类装饰器函数扩充接口类装饰器使用wraps恢复元信息函数装饰器装饰类方法类装饰器装饰类方法总结 类装饰器 类装饰器中的__init__方法相当于装饰器的外层函数,而__call__方法相当于装饰器的内层函数。创建一个装饰器使函数延迟2秒执行 clas

T型人小付的博客 763

STM32电机PID速度控制

2.3 STM32电机PID速度控制 之前的文章,完成了直流减速电机的PWM控制、电机测速。本篇文章,将实现电机的速度闭环控制。 在公众号:小白学移动机器人,发送:速度PID,即可获得本篇文章的STM32工程文件以及相关资料。 2.3.1 解决的问题 解决带编码器直流电机的速度闭环问题。 2.3.2 PID理论 将偏差的比例、积分、微分,通过线性组合构成控制量,用控制量对被控对象进行控制,这样的控制器称为PID控制器。在连续空间中,我们通常探讨模拟PID的控制原理,如图所示: 我们这里用电机速度控制为例,

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 6万+

python 类的使用(5)之类装饰器(类的装饰器和类作为装饰器)

在Python中,类可以作为装饰器,同时也能被函数装饰器所装饰。本文简要介绍了类作为装饰器和函数装饰器装饰类的使用方式,有兴趣的不要错过啊!

keepaware的博客 2万+

企业级 Token 中转架构设计:高并发、多模型、费用监控一次搞定

摘要:本文针对企业级AI开发中的多模型接口混乱、高并发稳定性差及Token费用失控等痛点,提出一套2026年企业级Token中转架构解决方案。该方案采用五层分层设计(接入层、网关层、调度层、服务层、存储层),实现多模型统一接口、智能路由、高并发限流容错及精细化成本监控。核心功能包括:异构模型标准化接入、动态路由策略(场景/成本/负载/容灾)、多级限流熔断机制、全链路Token计费与安全防封体系(指纹清洗、IP池隔离)。通过分层解耦与模块化设计,企业可降低50%成本、提升99%稳定性,并避免封号风险。文章还提

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 146

Centos 7 Linux 安装 JDK 8:下载、安装、配置环境变量、验证

本文详细介绍了在 CentOS 7 系统上手动安装 JDK 8 的完整流程,包括环境准备、JDK 安装包下载与上传、解压安装、配置全局环境变量,以及最终的验证步骤。适用于使用 VMware 虚拟机、云服务器或物理机的 CentOS 7 用户,操作清晰、步骤完整,帮助开发者快速搭建 Java 开发环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 2582

Python高级开发(二):类装饰器与带参数装饰器

本文深入探讨Python中两种高级装饰器模式。类装饰器通过实现__init__和__call__方法,适合需要维护状态的场景,如函数调用计数。带参数装饰器采用三层嵌套结构(装饰器工厂+装饰器+包装函数),实现可配置功能如重复执行N次。文章还展示了如何用类实现带参数装饰器,使代码更清晰。这些技巧充分利用闭包和高阶函数特性,是编写可复用、可配置专业级装饰器的关键。

专注于网络安全攻防技术与安全运营(SecOps)实践。 907

【WRF-Urban】使用 CGLC-MODIS-LCZ_100m 数据集运行 WRF 时的城市参数化问题

【WRF-Urban】使用 CGLC-MODIS-LCZ_100m 数据集运行 WRF 时的城市参数化问题

WW、forever的博客 711

Python装饰器高级版—Python类内定义装饰器并传递self参数

本文重点:解决了类里面定义的装饰器,在同一个类里面使用的问题,并实现了装饰器的类属性参数传递目录:一、基本装饰器二、在类里定义装饰器,装饰本类内函数三、类装饰器正文:一、基本装饰器装饰不带参数的函数defclothes(func): defwear(): print('Buyclothes!{}'.format(func.__na...

weixin_33711647的博客 9937

实现边缘实时动物检测:YOLOv5模型优化与树莓派4B部署全攻略

本文介绍了基于高性能计算机训练YOLOv5目标检测模型,并部署到树莓派4B实现实时动物检测的全流程。主要内容包括:1)在高性能计算机上通过Anaconda创建虚拟环境,安装YOLOv5项目并进行模型训练;2)将训练好的best.pt模型迁移到树莓派,配置轻量级Miniconda环境;3)连接树莓派摄像头,运行实时检测程序。该系统兼顾了训练效率和边缘设备部署的实用性,可广泛应用于智慧农业、生态监测等场景。文中详细说明了数据准备、环境配置和部署步骤,为开发轻量级目标检测系统提供了完整参考方案。

m0_64661770的博客 201

YOLOv8【第一章:基础入门篇·第2节】一文搞定,数据集制作与标注完全指南!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏,该专栏专注于分享我在YOLOv8目标检测模型中的实战经验,涵盖从入门基础到深度优化的全方位解决方案。无论你是计算机视觉的新手,还是具有多年深度学习经验的专家,本专栏都将为你提供高效、可复现的技术方案,助你掌握YOLOv8的核心技术,提升目标检测性能,突破瓶颈,优化模型,并加速项目开发🚀!

**My Coding Family** 1507

【Python】一文弄懂python装饰器(附源码例子)

本文由浅入深介绍了python的装饰器,并且通过代码展现了如何自己手写装饰器函数和类装饰器。装饰器就是python的一个拦路虎,你干或者不干它,它都在那里。如果你想学会高级的python用法,装饰器就是你这个武松必须打倒的一只虎。

zhh763984017的博客 8万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

PYTHON类装饰器与高级函数

”"enumerate:同时获取元素及其索引。filter:过滤序列中的元素。lambda:创建匿名函数。map:对序列中的每个元素应用函数。reduce:对序列中的元素进行累积操作。zip:将多个可迭代对象“压缩”在一起。islice: 类似于切片sorted:自定义排序“”"MarkdownText-to-HTMLAuthorsJohnLuke。

weixin_44073289的博客 1018

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python 装饰器高级应用详解:从原理到实践

装饰器是 Python 中一种强大的元编程工具,它允许我们在不修改原函数代码的情况下增强函数的功能。装饰器在 Python 中被广泛应用于日志记录、性能分析、权限控制、缓存等场景。@property。

lady_mumu的博客 4851

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

在类中定义装饰器:Python高级元编程技术详解

在类中定义装饰器:Python高级元编程技术详解

KE17RS的博客 1643

python打卡 DAY 29 复习日:类的装饰器

"""类方法内部定义"""return f"调用类 {cls.__name__}""""静态方法内部定义"""return "独立于类和实例"pass# 外部定义类方法return f"外部添加的类方法: {cls.__name__}"# 外部定义静态方法return "外部添加的静态方法"特性内部定义外部定义可读性高低维护性好差动态性固定灵活使用场景常规开发元编程/框架开发。

2301_76970300的博客 2570

day29 python深入探索类装饰器

本文深入探讨了Python中的类装饰器,通过对比类装饰器与函数装饰器的异同,揭示了类装饰器在动态修改类结构方面的强大功能。文章详细介绍了类装饰器的实现方式,包括为类添加日志功能和动态方法绑定的两种方式,并通过实例代码展示了如何手动调用装饰器对已定义的类进行“后天改造”。最后,文章总结了类装饰器的核心优势,即在不修改原类代码的情况下扩展功能,并展望了未来在项目中应用类装饰器以提升代码复用性和维护性的可能性。

weixin_54274596的博客 1065

Python装饰器decorator(装饰器装饰函数、类,及高级编程技巧的实现案例详解)

装饰器是Python中一个非常强大的功能。强大在于:装饰函数(简单功能) 与 装饰类(包含多个高级功能)。

qq_23126569的博客 3852

把装饰器作用到类和静态方法上:Python高级技巧详解

把装饰器作用到类和静态方法上:Python高级技巧详解

KE17RS的博客 725

Python笔记-类装饰器

使用类装饰器还可以依靠类内部的__call__方法,但使用@形式将装饰器附加到函数上时,就会调用此方法。 如下代码: class Foo(object): def __init__(self, func): self._func = func def __call__(self, *args, **kwargs): print("class ...

IT1995的博客 4568

Python高级装饰器:类的装饰器与类作为装饰器实战解析

装饰器是Python中基于高阶函数和闭包实现的元编程技术,其核心原理是在不修改原函数或类代码的前提下,通过包装器动态添加功能。这一机制在工程实践中具有重要价值,常用于日志记录、性能监控、权限校验等横切关注点的统一处理。当应用场景从函数扩展到类时,装饰器的能力边界被极大拓宽,能够处理更复杂的状态管理和结构增强需求。类的装饰器直接作用于类定义,可用于自动注册、单例模式实现或动态添加方法;而类作为装饰器则通过实现__call__方法,使类实例可像函数一样调用,便于封装和维护装饰器自身的状态,例如实现带计数器的调用

weixin_30613343的博客 729
上一篇: python高级 之(一) --- 函数类型
下一篇: python高级 之(三) --- 高阶函数
baoding4359
博客等级 码龄11年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值