python装饰器的作用和用法是什么?
导读:这篇文章主要介绍python装饰器的相关内容,对新手学习和理解python装饰器的作用和用法有一定的帮助,感兴趣的朋友可以了解看看,希望大家阅读完这篇文章能有所收获,接下来跟随小编一起来学习一下吧。什么是装饰器:装饰器的本质就是一个函数,作...
这篇文章主要介绍python装饰器的相关内容,对新手学习和理解python装饰器的作用和用法有一定的帮助,感兴趣的朋友可以了解看看,希望大家阅读完这篇文章能有所收获,接下来跟随小编一起来学习一下吧。
什么是装饰器:装饰器的本质就是一个函数,作用是在不改变源代码的情况下,给函数增加额外的功能;装饰器的使用通过@语法糖进行调用。
普通装饰器:
直接上代码吧。
def demo(func_test):
def wrapper():
print('定义的第一个装饰器')
func_test()
print('装饰器结束')
return wrapper #这里注意不要加括号
@demo
def func_test():
print('小白小白!!!!')
直接使用自定义装饰器强化的原方法。
带有参数的装饰器:
def demo(func_test):
def wrapper(name):
print('定义的第一个装饰器')
func_test(name)
print('哦,你就是%s啊'%name)
print('装饰器结束')
return wrapper
@demo
def func_test(name):
print('大家好我叫%s'%name)
是不是有点感觉了啊。
接下来就是不带自定义参数的装饰器
def demo(func_test):
def wrapper(*name,**kwargs):
print('定义的第一个装饰器')
func_test(*name,**kwargs)
print('哦,你就是%s啊'%name[0])
print('你今年%s岁啊'%name[1])
print('装饰器结束')
return wrapper
@demo
def func_test(name,age):
print('大家好我叫%s'%name)
print('今年{
}
'.format(age))
是不是很简答啊。哈哈哈哈
多个装饰一起使用。
def deco01(func):
def wrapper(*args,**kwargs):
print('第一层的装饰器')
func(*args,**kwargs)
print('第一层装饰器结束')
return wrapper
def deco02(func):
def wrapper(*args,**kwargs):
print('这是第二层装饰器')
print('第二层装饰器结束')
func(*args, **kwargs)
return wrapper
@deco02
@deco01
def func(a,b,c,name):
print('hello ,here is a func')
print("result is %d" %(a+b+c))
print('name:{
}
'.format(name))
看看执行顺序可以看出装饰器是从上往下执行的。
类装饰器:
在使用装饰器时我们总不能在一个文件里写的都是装饰器和各个方法吧,总是要分开的。这里就要是讲一个类装饰器。
这里呢,我大概了写了一个读取文件装饰器的例子。
class Mydecorator():
def __init__(self,func):
# 定义为私有属性
self.func = func
# 实现__call__方法,让对象变成可以调用的对象,可调用的对象可以想函数那样使用
def __call__(self, *args, **kwargs):
print('测试类装饰器')
self.func(*args)
catalogue = args[0]
suffix = catalogue.split('.')[2]
try:
if suffix == 'json':
with open(*args,'r',encoding='utf-8') as file_object:
contents = json.load(file_object)
print(contents)
else:
with open(*args,'r',encoding='utf-8') as file_object:
contents = file_object.read()
print(contents)
except Exception as a:
print('读取文件出错拉:{
}
'.format(a))
@Mydecorator
def name(name):
print('请输入对应文件路径:%s'%name)
关于python装饰器的作用和用法就介绍到这,上述示例具有一定的借鉴价值,感兴趣的朋友可以参考,希望能对大家有帮助,想要了解更多python算法的内容,大家可以关注其它的相关文章。
文本转载自脚本之家
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: python装饰器的作用和用法是什么?
本文地址: https://pptw.com/jishu/651427.html
