美文网首页
Python之装饰器

Python之装饰器

作者: 冰西瓜大郎 | 来源:发表于2017-07-13 22:19 被阅读0次

    装饰器的作用:

    装饰模式有很多经典的使用场景,例如插入日志、性能测试、事务处理等等,有了装饰器,就可以提取大量函数中与本身功能无关的类似代码,从而达到代码重用的目的。

    最简单的例子就是日志:

    def func():
        print(func.__name__)
    

    如果此时想打印一条log,可以这样写:

    def func():
        logging.warn("this is")
        print(func.__name__)
    

    使用这样方式的话,以后在其他方法里也必须这样写了,重复代码太多。
    这个时候装饰器的价值就体现出来了。
    装饰器本质是一个对象。以函数对象作为参数:

    def deco(func):
        def wrapper(*args,**kwargs):
             logging.warn("this is")
             func()
        return wrapper
    
    def func():
        print(func.__name__)
    
    func = deco(func) #deco(func)返回的是一个函数对象
    func() #函数对象func()才会执行这个方法
    

    用@语法糖:

    def deco(func):
        def wrapper(*args,**kwargs):
             logging.warn("this is")
             func()
        return wrapper
    @deco
    def func():
        print(func.__name__)
    
    #!/usr/bin/python  告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器;
    #encoding="utf-8"
    这样py文件中就可以输入中文了
    
    #!/usr/bin/python相当于写死了python路径;
    #!/usr/bin/env python会去环境设置寻找python目录,
    

    相关文章

      网友评论

          本文标题:Python之装饰器

          本文链接:https://www.haomeiwen.com/subject/bzyghxtx.html