标签:decorator this 类装饰器 app rap strong span 函数 http
def foo(): print("foo") def bar(func):#func是一个指针 func() print(id(foo)) print(set)#set是一个类 print(set())#加上()后set是一个实例 bar(foo)
#修饰器的好处,方便添加日志 #添加日志的土方法 def foo(): print("This is foo") def doo(): print("This is doo") def use_logging(func): print("B band"+func.__name__)#此时的B是可以修改的,比如换了一家银行,改一下这里就很方便的修改了所有,有点像define func() use_logging(foo) use_logging(doo)
#自定义模块和包 def use_logging(func): def wrapper(): print("B band"+func.__name__)#把foo当参数传进来,执行func()就相当于执行foo() return func()#加括号了 return wrapper def foo(): print("This is foo") def doo(): print("This is doo") foo = use_logging(foo)#执行foo相当于执行wrapper了 doo = use_logging(doo) foo() doo()
#添加日志的标准方法 def use_logging(func): def old_logging(): print(func.__name__)#此时的B是可以修改的,比如换了一家银行,改一下这里就很方便的修改了所有,有点像define return func() return old_logging @use_logging#表示foo被using-logging修饰 def foo(): print("This is foo") @use_logging #就像是qq里的@一样 def doo(): print("This is doo") foo() doo()
#修饰器里带参数 def use_logging(level): def decorator(func): def wrapper(*args, **kwargs): print(func.__name__) return func(*args,**kwargs) return wrapper return decorator @use_logging("A level") def foo(name=‘mike‘): print(name) @use_logging("A level") def doo(paraA, paraB, *args): print(paraA, paraB, *args) foo(‘jiangeryu‘) doo("paraA","paraB",("argsA","argsB")) #可嵌套调用
装饰器里带参数
类装饰器(但是不用重点掌握,重点掌握函数装饰器)
c最先修饰
标签:decorator this 类装饰器 app rap strong span 函数 http
原文地址:https://www.cnblogs.com/banxiabx/p/12879706.html