python装饰器

python装饰器


装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短。


上一篇我们了解了什么是嵌套函数,在此基础上来了解装饰器会更容易一些。

实例:

def book(name):
    return "书名: {0}".format(name)


def demo(func):  
    def wrapper(name):     
        return "<p>{0}</p>".format(func(name))  
        #func(name)使用外层函数传入的参数,
        #在以name为参数执行这个对象
    return wrapper

xianyu = demo(book)  # 调用外层函数对象
m_demo=xianyu("射雕英雄传")  
print(m_demo)

>>><p>书名: 射雕英雄传</p>

使用装饰器来执行上面的案例

# 函数demo作为装饰器函数
def demo(func):  
    def wrapper(name):     
        return "<p>{0}</p>".format(func(name))  
    return wrapper

@demo   # 大朗~该用这个装饰器啦~
def book(name):
    return "书名: {0}".format(name)

# xianyu = demo(book)  # 调用外层函数
# m_demo=xianyu("射雕英雄传")  

m_demo = book("武林外传")
print(m_demo)
>>> <p>书名: 武林外传</p>

装饰器可以多层使用

# 装饰器函数
def demo(func):    
    def wrapper(name):     
        return "<p>{0}</p>".format(func(name))  
    return wrapper

def box(func):
    def wrapper(name):
        return "<div>{0}</div>".format(func(name))
    return wrapper

@box  # 第一个
@demo     #第二个
def book(name):
    return "书名: {0}".format(name)


# xianyu = demo(book)  # 调用外层函数
# m_demo=xianyu("射雕英雄传")  


m_demo = book("武林外传")
print(m_demo)
>>> <div><p>书名: 武林外传</p></div>
相关推荐
©️2020 CSDN 皮肤主题: 鲸 设计师:meimeiellie 返回首页