Python之装饰器

装饰器的作用:

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

最简单的例子就是日志:

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目录,
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Python之装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功...
    ikaroskun阅读 2,806评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,192评论 19 139
  • 1.认识装饰器 在python中,对于一个函数,若想在其运行前后做点什么,那么装饰器是再好不过的选择,话不多说,上...
    howie6879阅读 5,225评论 4 20
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,695评论 25 709
  • 记忆所及 那里有凉风 蓝天 和沙 我们曾经的爱 像土豆一样大 酿入黑色的小菇 渐渐无名无姓 多年以后 我又来到这儿...
    留子尧阅读 1,801评论 4 8

友情链接更多精彩内容