有参装饰器
1.有参装饰器的功能
在给函数添加功能的时候可以通过参数控制具体的操作(操作不固定)
2.怎么写有参装饰器
def 函数名0(装饰器的参数列表)
def 函数名1(func):
def 函数名2(*args, **kwargs):
result = func(*arges, **kwargs)
新功能
return result
return 函数名2
return 函数名1
def 函数名(装饰器的参数列表)
无参装饰器
return 无参装饰器的函数名
有参装饰器的用法:
@函数名0(装饰器实参列表)
写一个装饰器可以在函数结束后打印指定的任意提示信息
def add_message(msg):
def test1(func):
def new_func(*args, **kwargs):
result = func(*args, **kwargs)
print(msg)
return result
return new_func
return test1
@add_message(‘after’)
def func1(x, y):
print(x+y)
func1(10, 20)
练习:写一个装饰器,在原函数返回值的基础上减去指定的值
@sub(10) @sub(30)
def sub(num):
def test(func):
def new_func(*args, **kwargs):
result = func(*args, **kwargs)
if type(result) in (int, float, complex):
return result - num
return result
return new_func
return test
迭代器(iter)
1.迭代器是容器型数据类型(序列)
特点:a.不能同时查看所有元素(打印看不到里面的元素)
b.不能统计个数
c.获取元素的时候只能一个一个的取(每次取最上层的那个),每次获取元素该元素就会从迭代器中消失(取一个就少一个)
2.创建迭代器
迭代器的创建有两种方式
1)通过iter将其他序列转换成迭代器
2)创建生成器
iter1 = iter([10, 20, 30, 40])