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)
海康威视公司福利 1194人发布