zoukankan      html  css  js  c++  java
  • decorator在Python中的作用

    decorator(装饰器)在python中作用,可以起到代码复用,也可以起到AOP(面向横切面)的作用。

    另外很重要的一点应该就是function在python的世界中是作为一等公民存在的。

    在python中,loop可以用map来代替,if...else...可以用filter来代替,那么try...except...呢?没有原生支持,那我们就创造一个,此时decorator就闪亮登场了。

    下面举一个打开文件的例子来进行说明。

    1 def read(file):
    2     x = open(f, 'r')
    3     y = x.read() 
    4     x.close() 
    5     return y

    但是如果在打开文件的过程中出错了呢,怎么办?最简单的当然是修改read这个函数,但是假如有很多类似这样的函数呢,那怎么办,做为程序员,最重要的一个特性就是尽量解放生产力(就当给自己偷懒找个借口吧...),好吧,此时就是本文的主角出场了。

    1 def deco_try(func): 
    2     def _decotry(*arg, **kwarg): 
    3         try: 
    4             func(*arg, **kwarg) 
    5         except Exception, ex: 
    6             print 'app error', str(ex) 
    7             raise ex 
    8     return _decotry            

    写好上述函数后,就可以使用了:

    1 @deco_try
    2 def read(file):
    3     x = open(f, 'r')
    4     y = x.read() 
    5     x.close() 
    6     return y

    利用 decorator 的方式,只要在函数定义的上面加上 @decorator,而不用動到呼叫的地方。同時,原来的read里面的代码也不会改动。
    decorator在了解之后,的确可以在「简化代码」,「重用代码」方面提供非常大的帮助。

    理解了decorator后,相信在理解python中的property这个东西也就不会有任何困难了。

  • 相关阅读:
    openstack 介绍
    python实现图片批量剪裁的程序
    iOS开发多线程篇—GCD介绍
    block代码块介绍
    ios中的界面跳转方式
    NSNotificationCenter消息机制的介绍
    ios的手势操作之UIGestureRecognizer浅析
    collectionViewFlow的界面编写
    UITableView的简单应用介绍
    滚动视图创建
  • 原文地址:https://www.cnblogs.com/xwang/p/3549039.html
Copyright © 2011-2022 走看看