首页 > > > Python的装饰器原来是这么用的
def f1():
print('普通函数')
def f2(func): #f2函数的参数是一个函数,所以它是一个高阶函数
print('高阶函数1')
f1()
def f3(func): #f3函数的返回值是一个函数,所以它是一个高阶函数
print('高阶函数2')
return func
f2(f1)
f3(f1)
结果:
高阶函数1
普通函数
高阶函数2def outer():
print('outer')
def inner():
print('inner')
inner()
outer()
结果
outer
innerdef add_log(func): #一个函数作为参数,这个函数就是我们要
def wrapper():
print('我们要加一些日志') #要给原函数添加的新功能,这里就是打印一行日志,当然可以实现其他复杂的功能
func()
return wrapper
#上面可以看到高阶函数+嵌套函数的影子吧,加一起就是一个最简单的装饰器拉
@add_log #装饰器的用法
def f1():
print('普通函数')
f1() #调用函数
结果:
#看结果f1里面只有print一行,但是结果多了一行,就是装饰器的作用
我们要加一些日志
普通函数def add_log(func):
def wrapper(name):
print('我们要加一些日志')
func(name)
return wrapper
@add_log
def f1(name):
print('普通函数 %s' %name)
f1('python')def add_log(func):
def wrapper(*args,**kwargs):
print('我们要加一些日志')
func(*args,**kwargs)
return wrapper
@add_log
def f1(name):
print('普通函数 %s' %name)
@add_log
def f2(name,age):
print('我是%s,我%s岁了' %(name,age))
f1('python')
f2('java',10)来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3932/viewspace-3155045/ ,如需转载,请注明出处,否则将追究法律责任。