zoukankan      html  css  js  c++  java
  • python3


    装饰器(decorator)应用的场景:
    1、引入日志
    2、函数执行时间统计
    3、执行函数前预备处理
    4、执行函数后清理处理
    5、权限校验等场景
    6、缓存


    # 通用装饰器
    import functools

    def log(func):
    # 若是不加这个,test()函数经过装饰后,test.__name_ 变成了 wrapper
    # 让test.__name_ 仍为test,不需要编写wrapper.__name__ = func.__name__,Python内置的functools.wraps就是干这个事
    @functools.wraps(func)
    def wrapper(*args, **kw):
    print('call %s():' % func.__name__)
    return func(*args, **kw)
    return wrapper

    # 针对带参数的装饰器
    import functools

    def log(text):
    def decorator(func):
    @functools.wraps(func)
    def wrapper(*args, **kw):
    print('%s %s():' % (text, func.__name__))
    return func(*args, **kw)
    return wrapper
    return decorator

    # 只要python解释器执行到了这个代码,那么就会自动的进行装饰,
    # 而不是等到运行的的时候才装饰

    # 1、先执行log('ok')函数,这个函数return的结果就是decorator这个函数的引用
    # 2、进而使用@decorator对test进行装饰
    @log('ok') # 相当于执行了 now = log('execute')(now)
    def test():
    print('...test...')

    # 在调用test之前,就已经进行了装饰
    test()
    print(test.__name__) # test
  • 相关阅读:
    获取APK的包名,和启动窗口类
    AS 中手动实现无线真机调试
    debian9安装jdk1.8
    java内存检测
    debian9设置pptp
    apache2 支持https
    centos安装python3
    debian laravel访问Mysql
    debian9下为apache启用rewrite模块,修改默认路径
    Java学习笔记(一)背景知识
  • 原文地址:https://www.cnblogs.com/AndyChen2015/p/7406810.html
Copyright © 2011-2022 走看看