码迷,mamicode.com
首页 > 编程语言 > 详细

python closure and function decorators 2

时间:2014-12-04 21:32:58      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   使用   sp   for   

好吧,基础打好,聊聊decorator,先看这段代码:

def SayHi(name):
    return "How are you {0}, good morning".format(name)

def decoator(func):
    def func_wrapper(name):
        return "<p>{0}</p>".format(func(name))
    return func_wrapper

hi = decoator(SayHi)
print hi("Allen")

当我们每次调用hi()方法的时候,你不觉得特别方便么?

很多人会问,为啥要用decoator?请想想,再增加一个返回<div></div>的函数是不是更方便

 

好了,下面说点语法糖,用到@函数修饰

def decoator(func):
    def func_wrapper(name):
        return "<p>{0}</p>".format(func(name))
    return func_wrapper

@decoator
def SayHi(name):
    return "How are you {0}, good morning".format(name)

print SayHi("Allen")

代码几乎没变,却更干净,整洁,优雅了

 

更多的时候,很多人这么使用decorator,是不是很舒服? 

class Decorate:
    def decorate(self,func):
        def func_wrapper(self):
            return "<p>{0}</p>".format(func(self))
        return func_wrapper

class Person(object):
    d = Decorate()
    def __init__(self):
        self.name = "Allen"
        self.family = "Liu"

    @d.decorate
    def get_fullname(self):
        return self.name+" "+self.family

my_person = Person()
print my_person.get_fullname()

<p>Allen Liu</p>

 

python closure and function decorators 2

标签:style   blog   io   ar   color   os   使用   sp   for   

原文地址:http://www.cnblogs.com/allencharp/p/4143736.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!