zoukankan      html  css  js  c++  java
  • python之装饰器(类装饰器,函数装饰器)

    @decorator这个语法相当于 执行 func = decorator(func),为func函数装饰并返回
    <1> 类装饰器

    ## 装饰器
    #类装饰器
    class Decorator:
        def __init__(self,func):
            ## 赋值函数
            self.func = func
    
        def __call__(self, *args, **kwargs):
            ## 一call顶万物
            print('假设这里开始执行其他的代码')
            self.other_func()
            self.func(*args, **kwargs)
            self.other_func2()
            print('假设这里在执行完这个函数后,执行了其他的代码')
            return
        def other_func(self):
            print('这是一个打酱油的函数')
    
        @staticmethod
        def other_func2():
            print('这是一个吃瓜的函数')
    
    ## 测试一下
    @Decorator
    def test_a(a,b):
        print(f'print a :{a}')
        print(f'print b :{b}')
        c = a+b
        print(c)
        return c
    
    test_a(1,2)

    执行结果:

    <2>函数装饰器

    函数装饰器还是比较多的,相对来说

    def zsq_func(func):
        print('这是一个函数装饰器')
        def wrapper(*args,**kwargs):
            try:
                print('开始前,执行的代码')
                func(*args,**kwargs)
                print('结束了,执行的代码')
                return
            except:
                print('出错了的处理')
    
        print('执行装饰器函数前可以执行其他代码')
        return wrapper
    
    ## 测试一下
    @zsq_func
    def func(a,b):
        print(f'print a :{a}')
        print(f'print b :{b}')
        c = a+b
        print(c)
        return c
    func(1,2)

    结果如下:

  • 相关阅读:
    数据结构和算法关系
    x轴滚动
    常用Python第三方库简介
    devgridContral
    第一次线程使用经验总结
    调取图片出现的的内存泄露,导致大红叉
    IEEE754 处理数据变换
    c# 基础任务1
    Python-常用第三方库
    C#高性能大容量SOCKET并发(八):通讯协议
  • 原文地址:https://www.cnblogs.com/dflblog/p/11357909.html
Copyright © 2011-2022 走看看