zoukankan      html  css  js  c++  java
  • Python自学笔记(17day)

    装饰器的进阶

    (1)

    #如果我们要装饰很多函数,就需要写很多装饰名字,如果不想用,就要注释掉很多次,太麻烦
    #一次可以用3层装饰器来实现简化
    
    FALG=True
    def login(f):
        def wrapper(func):
            def inner(*args,**kwargs):
                if FALG:
                    """
                    函数之前的操作
                    """
                    ret=func()
                    """
                    函数之后的操作
                    """
                    return ret
                else:
                    ret=func()
                    return ret
        return inner
    
    
    @login(FALG)             #先调用函数login(),将FALG传入,拿到inner再装饰
    def func(*args ,**kwargs):
        print("帅哥")
    #当不需要运行时,只需要FALG=False,就不会执行函数的前后操作了

    (2)

    def wrapper1(func):
        def inner():
            print("wrapper1,before")
            ret=func()
            print("wrapper1,after")
            return ret
        return inner
    
    def wrapper2(func):
        def inner():
            print("wrapper2,before")
            ret=func()
            print("wrapper2,after")
            return ret
        return inner
    
    def func():
        print("in")
    
    @wrapper2
    @wrapper1
    func()
    
    
    #输出:wrapper2,before
    #      wrapper1,before
    #      in
    #      wrapper1,after
    #      wrapper2,after
    
    
    
    #结论:多个装饰器装饰同一个函数,执行顺序:函数前按顺序依次并列执行+函数执行+函数后逆序
    #执行      21---12
  • 相关阅读:
    Scrapy爬虫框架
    python Re库的介绍
    正则表达式,regular expression, regex, RE
    信息标记的三种形式
    python Beautiful Soup库入门
    python requests第三方库详解
    递归算法
    枚举算法
    MySQL CONCAT()与GROUP_CONCAT()的使用
    关于日期函数查询总结
  • 原文地址:https://www.cnblogs.com/baobaoran/p/9703816.html
Copyright © 2011-2022 走看看