python闭包和装饰器

1、闭包: 一个函数中嵌套着另外一个函数, 内部函数调用外部函数的变量, 外部函数输出的是内部函数的调用,如下例子所示:

def outer(data):
    def wraaper(da):
        return '闭包实例:' + str(data) + str(da)

    return wraaper


print(outer(5)(4))

2、装饰器是闭包的应用,用于在不修改原始代码的情况下给代码添加新的功能

def outer(func):
    def wraaper():
        print('闭包实例')
        return func()

    return wraaper


@outer
def func():
    print('123')


func()

3、类装饰器用法与函数装饰器没有太大区别,实质上是使用了类方法中的call魔法方法来实现类的直接调用

class logging(object):
    def __init__(self, func):
        self.func = func

    def __call__(self, *args, **kwargs):
        print('类装饰器实例:{}'.format(self.func.__name__))
        return self.func(*args, **kwargs)


@logging
def hello(a, b):
    print(a, b)


hello(1, 2)

全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务