@符号装饰器
‘’’
python2.4支持使用@符号将装饰器应用在函数上,只需要在函数定义前加上@装饰器的名称即可
‘’’
def wrapper(f):
def inner(name, age):
# 增加功能
if age <= 0:
age = 0
return f(name, age)
return inner
@wrapper #func1 = wrapper(func1) # 可以用@符号代替
def func1(name, age):
return ‘姓名是:%s , 年龄是:%d’ % (name, age)
print(func1(‘小文’, -19))
‘’‘通用装饰器’’’
def wrapper(f):
def inner(*args,**kwargs):
#在这里增加功能
print(‘一份耕耘一分收获’)
res=f(*args,**kwargs)
#如果要修改原函数的返回值,在这里修改
return res
return inner
@wrapper
def func(name,age):
print(name,age)
return ‘It is a good girl !’
print(func(‘李’,26))
‘’’
带参数的装饰器:写三层,参数在最外层,函数在第二层,原函数在第一层
‘’’
#打印5次你好
def wrapper(count):
def func2(f):
def inner(*args,**kwargs):
for i in range(count):
f(*args,**kwargs)
return inner
return func2
@wrapper(5)
def func():
print(‘你好’)
func()