一、迭代器
定义:对list,tuple,dict,str等数据类型使用for…in的循环语法,从其中依次取出数据,这个过程叫做遍历,也叫迭代。迭代是访问集合元素的一种常用的方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
例子:
list=[1,2,4,6]
it=iter(list) #iter()创建迭代器对象
print(type(it),it,next(it),end=",") #next()输出迭代器的下一个元素
for i in it:
print(i)
>>>><class 'list_iterator'> <list_iterator object at 0x0000000009E592B0> 1,2
>>>>4
>>>>6
二、生成器
定义:使用了 yield 的函数被称为生成器(generator)。生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
例子:
def ChiHuo(name):
print("%s准备吃包子了"%name)
while True:
baozi = yield #yield 表示生成器的关键字
print("包子[%s]来了,被[%s]吃了!" %(baozi,name))
a = ChiHuo("张三")
a.__next__() #生成器中正用这个方法来打印结果
a.send(2) #这个方法即可以打印也可以传输出结果
>>>>张三准备吃包子了
>>>>包子[2]来了,被[张三]吃了!
三、修饰器
定义:本质是函数,就是为了其他函数添加附加功能(装饰其他函数)
遵循的原则:1、不能修改被装饰函数的源代码 2、不能修改被装饰函数的调用方式
例子:
import time
def hemer(func):
def wad():
start_time=time.time()
rec=func()
end_time=time.time()
print(start_time-end_time)
return rec
return wad
@hemer #runc=hemer(runc)
def runc():
time.sleep(1)
print("库")
return "你好酷"
rec=runc()
print(rec)
>>>>库
>>>>-1.000057458877563
>>>>你好酷
加认证的完整修饰器:
def Pan_Duan(Jg):
def Fang_F(Fa):
def Suan_F(*args,**kwargs):#列表参数显示用一个*,字典参数用两颗**
if Jg == "JF":
print("这是加减法")
w = Fa(*args,**kwargs) #运行调用方法, run
Gong_gong(w)
return w
elif Jg == "CF":
print("这是乘除法")
Gong_gong(Fa(*args, **kwargs))
return Fa(*args, **kwargs)
return Suan_F
return Fang_F #返回Fang_F 地址值
def Gong_gong(w):
if w % 2 == 0:
print("%d:为偶数"% w)
else:
print("%d:为奇数"% w )
@Pan_Duan(Jg = "JF")#括号的内容用来做认证用的J
def Jia_F(x,y):
z = x + y
print("x+y=",z)
return z
@Pan_Duan(Jg = "jF")
def Jian_F(x,y):
z = x - y
print("x-y=",z)
return z
@Pan_Duan(Jg = "CF")
def Cheng_F(x,y):
z = x * y
print("x*y=",z)
return z
@Pan_Duan(Jg = "cF")
def Chu_F(x,y):
z = x // y
print("x/y=",z)
return z
Jia_F(int(input("请输入X:")),int(input("请输入Y:")))
>>>>请输入X:12
>>>>请输入Y:12
>>>>这是加减法
>>>>x+y= 24
>>>>24:为偶数