day12 - 迭代器、生成器和模块
一、有参装饰器
1、应用场景
- 如果实现装饰器的功能时需要额外的数据,就需要有参装饰器
2、固定语法
- def 函数名(参数列表):
定义无参装饰器函数
return 午餐装饰器函数名
- 参数列表 - 参数列表的个数是看实现装饰器功能时需要多少个额外的数据,如果不需要额外的数据就使用无参装饰器
- 函数名 - 创建装饰器的函数名
def creat_tag(name):
def tag(f):
def new_f(*args, **kwargs):
result = f(*args, **kwargs)
return f'<{name}>{result}</{name}>'
return new_f
return tag
@creat_tag('a')
def func1():
return 'hello'
print(func1()) # <a>hello</a>
# 练习:写个装饰器将原函数的返回值加上指定的数
def add_number(num):
def number(f):
def new_f(*args, **kwargs):
result = f(*args, **kwargs)
if type(result) in (int, float, bool, complex):
return result + num
return result
return new_f
return number
@add_number(10)
def fu