首页 > 代码库 > Python Decorator

Python Decorator

/********************************************************************************* *                              Python Decorator * 说明: *     最近要处理markdown文档,想使用mkdocs来做实时修改显示,但其界面的pages设定 * 总让我这边不是很舒服,不能隐藏,所以打算看一下其源代码,看能不能隐藏,先学习 * 一下Python修饰器的语法,原因是源代码里面用到了修饰器。 * *                                                2016-8-30 深圳 南山平山村 曾剑锋 *********************************************************************************/一、参考文档:    1. A guide to Pythons function decorators        http://thecodeship.com/patterns/guide-to-python-function-decorators/    2. Python天天美味(34) - Decorators详解        http://www.cnblogs.com/coderzh/archive/2010/04/27/python-cookbook33-decorators.html    3. Python Decorator的来龙        https://segmentfault.com/a/1190000003719779    4. 装饰器        http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819879946007bbf6ad052463ab18034f0254bf355000二、示例1:    def p_decorate(func):       def func_wrapper(name):           return "<p>{0}</p>".format(func(name))       return func_wrapper    @p_decorate    def get_text(name):       return "lorem ipsum, {0} dolor sit amet".format(name)    print get_text("John")    # Outputs <p>lorem ipsum, John dolor sit amet</p>三、示例2:    from functools import wraps    def tags(tag_name):        def tags_decorator(func):            @wraps(func)            def func_wrapper(name):                return "<{0}>{1}</{0}>".format(tag_name, func(name))            return func_wrapper        return tags_decorator    @tags("p")    def get_text(name):        """returns some text"""        return "Hello "+name    print get_text.__name__ # get_text    print get_text.__doc__ # returns some text    print get_text.__module__ # __main__    

 

Python Decorator