python学习day13

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习day13相关的知识,希望对你有一定的参考价值。

 

 

带参数的装饰器

FLAG = False
def log(flag):
    def wrapper(func):
        def inner(*args,**kwargs):
            if flag:
                print(call : %s%func.__name__)
            ret = func(*args,**kwargs)
            return ret
        return inner
    return wrapper

@log(FLAG)  #wrapper = log(FlAG)   --> @wrapper --> qqxing = wrapper(qqxing) = inner
def qqxing():
    print(qqxing)

qqxing()  #inner()

此例子可以不改变装饰器的内容,仅通过改变全局变量来决定是否启用这个装饰器

 

装饰器嵌套

def wrapper1(func):
    def inner1():
        print(wrapper1 ,before func)
        func()  #f
        print(wrapper1 ,after func)
    return inner1

def wrapper2(func):
    def inner2():
        print(wrapper2 ,before func)
        func()   #inner1
        print(wrapper2 ,after func)
    return inner2

@wrapper2  #f = wrapper2(wrapper1(f))  --> f = wrapper2(inner1)   -->   f = inner2
@wrapper1
def f():
    print(in f)

f()  

 

以上是关于python学习day13的主要内容,如果未能解决你的问题,请参考以下文章

Python学习 Day13 Python 面向对象学习2:@property多重继承

python学习笔记-Day13-- 前端知识 html

day13 python学习 迭代器,生成器

python学习_day13___面试模拟真题讲解

python学习点滴记录-Day13-前端基础之css

Python学习day13 Django 分页/Session/Cookie