zoukankan      html  css  js  c++  java
  • 装饰器进阶

    装饰器进阶
    查看函数内包含的函数名和日志
    func.__name__
    func.__doc__
    子主题 3
    解决办法:
    from functools import wraps
    在外层函数内顶层@wraps(f)

    开方封闭原则
    对修改是封闭的
    对扩展是开方的

    带参数的装饰器
    由来:许多个函数,经常在需要被装饰与不装饰直间切换
    格式:

    flag = True
    def outer(flag):
    def wrapper(f):
    def inner(*args, **kwargs):
    if flag:
    print('函数执行前的操作')
    ret = f(*args, **kwargs)
    if flag:
    print('函数执行后的操作')
    return ret
    return inner
    return wrapper


    @outer(flag)
    def func(*args, **kwargs):
    pass

    func()

    只需要修改flag就可以是否开启装饰器

    多个装饰器装饰一个函数
    执行步骤
    def wrapper1(f):
    def inner1(*args, **kwargs):
    print('decorator 1 before')
    ret = f(*args, **kwargs)
    print('decorator 1 after')
    return ret
    return inner1


    def wrapper2(f):
    def inner2(*args, **kwargs):
    print('decorator 2 before')
    ret = f(*args, **kwargs)
    print('decorator 2 after')
    return ret
    return inner2

    @wrapper2
    @wrapper1
    def func():
    print('-'*10)

    func()

  • 相关阅读:
    昨天
    独一无二
    参加婚礼
    好好说话
    叶问4
    争吵+侦探成旭
    慢慢来
    cs go
    附3、Storm课程学习整体思路及问题 ---没用
    7、kafka知识总结
  • 原文地址:https://www.cnblogs.com/2018-01-30/p/8417899.html
Copyright © 2011-2022 走看看