千家信息网

Python怎么实现装饰器

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下Python怎么实现装饰器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!普通装饰器:直接上代码吧。def
千家信息网最后更新 2026年11月03日Python怎么实现装饰器

小编给大家分享一下Python怎么实现装饰器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

普通装饰器:

直接上代码吧。

def demo(func_test):    def wrapper():        print('定义的第一个装饰器')        func_test()        print('装饰器结束')    return wrapper    #这里注意不要加括号@demodef func_test():    print('小白小白!!!!')

直接使用自定义装饰器强化的原方法。
带有参数的装饰器:

def demo(func_test):    def wrapper(name):        print('定义的第一个装饰器')        func_test(name)        print('哦,你就是%s啊'%name)        print('装饰器结束')    return wrapper@demodef 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@demodef func_test(name,age):    print('大家好我叫%s'%name)    print('今年{}'.format(age))

是不是很简答啊。哈哈哈哈
多个装饰一起使用。

def deco01(func):    def wrapper(*args,**kwargs):        print('第一层的装饰器')        func(*args,**kwargs)        print('第一层装饰器结束')    return wrapperdef deco02(func):    def wrapper(*args,**kwargs):        print('这是第二层装饰器')        print('第二层装饰器结束')        func(*args, **kwargs)    return wrapper@deco02@deco01def 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))@Mydecoratordef name(name):    print('请输入对应文件路径:%s'%name)

以上是"Python怎么实现装饰器"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

文件 对象 就是 方法 篇文章 二层 内容 参数 小白 普通 接下来 不怎么 代码 例子 函数 多个 大部分 属性 感觉 括号 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 湖北九亚互联网络科技有限公司 深圳市人人互联网科技有限公司 高科技互联网 互联网科技未来 互联网公司 科技公司 互联网科技金融 上海互联网科技有限公司 腾讯科技 互联网女皇 互联网为啥属于高科技 港股科技和互联网 知域互联网科技有限公司大骗子 国大互联网教育科技有限公司工作 朱啸虎曾投资哪些互联网科技企业 上海京穆互联网科技有限公司 广东工业互联网大赛深圳学泰科技 浙南科技城互联网大厦招聘 图游互联网科技 互联网领先科技成果宣传视频 颐高云石互联网科技 互联网络科技 互联网科技活动banner 北京互联网科技公司 互联网科技logo设计 互联网科技股有哪些 语蝶互联网科技有限公司 杭州壁岐互联网科技有限公司 互联网时代的科技公司 上海互联网科技公司ppt 广州燕处互联网科技有限公司
0