zoukankan      html  css  js  c++  java
  • Python函数(九)-装饰器(二)

    如果给被装饰器装饰的函数传递参数的话,需要在装饰器里修改

    # -*- coding:utf-8 -*-
    __author__ = "MuT6 Sch01aR"
    
    import time
    
    def timer(func):
        def deco(n): #需要在此处设置形参
            start_time = time.time()
            func(n)
            stop_time = time.time()
            print("the run time is %s"%(stop_time-start_time))
        return deco
    
    @timer
    def test1(name):
        time.sleep(3)
        print('My name is %s'%name)
    
    test1('John')
    

    运行结果

    但是有两个或者多个被装饰的函数需要传递参数的话,这种情况就不太方便了

    所以可以直接用*args和**kwargs,不管被装饰的函数有几个,传递的参数有多少,不管是什么类型的参数

    # -*- coding:utf-8 -*-
    __author__ = "MuT6 Sch01aR"
    
    import time
    
    def timer(func):
        def deco(*args,**kwargs): #需要在此处设置形参
            start_time = time.time()
            func(*args,**kwargs)
            stop_time = time.time()
            print("the run time is %s"%(stop_time-start_time))
        return deco
    
    @timer
    def test1(name,age):
        time.sleep(3)
        print('My name is %s and my age is %s'%(name,age))
    
    @timer
    def test2(name,language,city):
        time.sleep(1)
        print('%s is studying %s in %s'%(name,language,city))
    
    test1('John',22)
    test2('Jack',city='beijing',language='Chinese')
    

    运行结果

  • 相关阅读:
    KVM(Keyboard、Video、Mouse)
    javascript valueof
    javascript的typeof的返回值
    javascript的===和==
    WGestures全局鼠标手势工具
    向win+x快捷目录添加功能
    好用的影子系统软件
    备份任务栏
    修改多个调用提示最小值_改变多选右键菜单
    执行Windows Update更新
  • 原文地址:https://www.cnblogs.com/sch01ar/p/8401815.html
Copyright © 2011-2022 走看看