zoukankan      html  css  js  c++  java
  • python进阶日记(装饰器的用法)

    修饰器用法:

    import time
    
    def decorate(func):
        def wrapper():
            print("正在校验")
            time.sleep(2)
            print("校验完成")
            func()
    
        return wrapper
    
    '''在你定义这个fun1时其实就已经完成了2步:
    1.把函数传到decorate中 
    2.fun1就等于返回的wrapper函数 
    这个过程运行完你的fun1就修饰完成了,之后就直接运行fun1即可
    '''
    @decorate
    def fun1():
        print(1)
    
    fun1()
    print(fun1)

     多参数的情况:

    import time
    
    def decorate(func):
        print('start')  #只要你定义了装饰器,decorate中除了wrapper外的都会顺序执行
        def wrapper(*args,**kwargs):   #加这两个东西就能随便传任意多的参数了
            print("正在校验")
            time.sleep(2)
            print("校验完成")
            func(*args,**kwargs)
    
        print('end')
        return wrapper
    
    @decorate
    def fun1(students):
        for stu in students:
            print(stu)
    list1 = ['a','b','c']
    #fun1(list1)

    多重装饰器:

    import time
    
    def decorate1(func):
        def wrapper(*args,**kwargs):
            print("正在校验")
            time.sleep(2)
            print("校验完成")
            func(*args,**kwargs)
    
        return wrapper
    
    
    def decorate2(func):
        def wrapper(*args, **kwargs):
            print("正在加载")
            time.sleep(2)
            print("加载完成")
            func(*args, **kwargs)
    
        return wrapper
    
    @decorate2       
    @decorate1     #2个装饰器,先由1装饰原函数,然后由2装饰整体
    def fun1(students):
        for stu in students:
            print(stu)
    list1 = ['a','b','c']
    fun1(list1)

    运行结果:

    -----------------------------------

    正在加载
    加载完成
    正在校验
    校验完成
    a
    b
    c

    ------------------------------------

  • 相关阅读:
    正则表达式(二)
    HTTP状态码
    ajax(局部刷新技术)
    day03<JS对象&函数>
    day02<CSS&JavaScript>
    day01<HTML等>
    总结:HTML表单的应用
    总结:HTML的框架结构
    九、浮动与定位
    八、CSS高级技巧
  • 原文地址:https://www.cnblogs.com/cunyusup/p/12411065.html
Copyright © 2011-2022 走看看