zoukankan      html  css  js  c++  java
  • 装饰器

    第一个函数,作用是返回所有参数

    def func1(*args):
        return (args)
    print(func1(2,3,4))
    #输出的是(2, 3, 4),return多个值返回的是个元祖

    假如需要加上一个功能,不仅返回所有参数,还要返回所有参数的和(假设所有参数是数字)

    #加个功能 算出所有参数的和
    def deco_demo(f):
        def wrapper(*args):
            f(*args)
            j=0
            for i in args:
                j+=i
            return f(*args),('所有的数字的和为',j)
        return wrapper
    
    @deco_demo
    def func1(*args):
        return (args)
            
    print(func1(2,3,4))
    #输出为:((2, 3, 4), ('所有的数字的和为', 9))

    假如还要加入一个功能,计算所有参数的乘积(假设所有参数是数字)

    #加个功能 算出所有参数的和
    def deco_demo(f):
        def wrapper(*args):
            f(*args)
            j=0
            for i in args:
                j+=i
            return f(*args),('所有的数字的和为',j)
        return wrapper
    
    #加个功能 算出所有参数的乘积
    def deco_demo2(f):
        def wrapper(*args):
            f(*args)
            j=1
            for i in args:
                j*=i
            return f(*args),('所有的数字的积为',j)
        return wrapper
    @deco_demo2
    @deco_demo
    def func1(*args):
        return (args)        
    print(func1(2,3,4))
    #输出:(((2, 3, 4), ('所有的数字的和为', 9)), ('所有的数字的积为', 24))

    装饰器调用顺序

    装饰器是可以叠加使用的,那么使用装饰器以后代码是啥顺序呢?

    对于Python中的”@”语法糖,装饰器的调用顺序与使用 @ 语法糖声明的顺序相反。

  • 相关阅读:
    C# 之 获取文件名及拓展名
    C# 之 日常积累(二)
    C# 之 OpenFileDialog的使用
    Linux系统中,main函数的执行过程
    linux线程的实现
    linux内核--进程与线程
    内核线程和进程的区别
    软中断和硬中断
    Linux 2.4.x内核软中断机制
    几种USB控制器类型:OHCI,UHCI,EHCI,xHCI
  • 原文地址:https://www.cnblogs.com/alantammm/p/12074400.html
Copyright © 2011-2022 走看看