您的位置:首页 > 编程语言 > Python开发

python closure and function decorators 2

2014-12-04 20:01 375 查看
好吧,基础打好,聊聊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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: