python装饰器以及用法

简介: python装饰器以及用法

什么是装饰器

先介绍三个相关概念

1.什么是一等对象

 1).对象在函数运行时创建。

 2).能赋值给变量或者作为数据结构中的元素。

 3).能作为参数传递

 4).能作为返回值返回

python 中所有的对象【字符串、列表、元组、字典、集合等等】 都是一等对象


2.高阶函数

1)将函数作为参数传递

2)将函数作为返回值返回

满足其一就是高阶函数。


3.闭包

闭包必须满足以下三个条件:

1).必须使用嵌套函数

2).外层函数必须将内层函数作为返回值返回

3).内层函数必须使用外层函数的变量

4.装饰器

我理解的装饰器就时一个闭包。只是这个闭包有点特殊。

1).外层函数的必须将一个函数作为参数

2).内层函数应该使用不定长参数,与不定长关键字参数【*args,**kwargs】作为参数

装饰器的两种用法

假设我们有两个函数,求任意个数字的和及任意两个数字的乘积

要求:让我们在函数前面及后面打印当前系统时间

deffunction(*a):# 求任意个数的和returnsum(a)
defmultiple(a,b):# 求任意两个数字的乘积returna*b# 创建装饰器defdecorator(old):
definner(*args,**kwargs):
print("开始执行时间:",time.strftime("%H:%M:%S",time.localtime(time.time())))
g=old(*args,**kwargs)
print("结束执行时间:",time.strftime("%H:%M:%S",time.localtime(time.time())))
returngreturninner

第一种,直接调用

add=decorator(function)
# 求任意数字的和result_1=add(1,23,4,5,6,67,8)
print(result_1)
result_2=add(2,3)
print(result_2)
mul=decorator(multiple)
# 求任意两个数字的积result_1=mul(2,4)
print(result_1)
result_2=mul(2,4)
print(result_2)

image.png

第二种,使用@

在任何想要使用装饰器的函数的上面使用  【@ + 装饰器名字】

# 修改# 创建装饰器defdecorator(old):
definner(*args,**kwargs):
print("开始执行时间:",time.strftime("%H:%M:%S",time.localtime(time.time())))
g=old(*args,**kwargs)
print("结束执行时间:",time.strftime("%H:%M:%S",time.localtime(time.time())))
returngreturninner@decoratordeffunction(*a):# 求任意个数的和returnsum(a)
@decoratordefmultiple(a,b):# 求任意两个数字的乘积returna*b# 调用result=function(1,35,576,8)
print(result)
result=multiple(2,99)
print(result)

image.png

相关文章
|
21天前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
200 100
|
29天前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
239 101
|
21天前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
131 88
|
1月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
171 99
|
1月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
151 98
|
1月前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
1月前
|
存储 缓存 测试技术
理解Python装饰器:简化代码的强大工具
理解Python装饰器:简化代码的强大工具
|
2月前
|
程序员 测试技术 开发者
Python装饰器:简化代码的强大工具
Python装饰器:简化代码的强大工具
183 92
|
29天前
|
缓存 测试技术 Python
解锁Python超能力:深入理解装饰器
解锁Python超能力:深入理解装饰器
79 2

推荐镜像

更多