四十、python中的生成器和迭代器


A、生成器(包含yield的就是生成器)


def func():
print(11)
yield 1

print(22)
yield 2

print(33)
yield 3

print(44)
yield 4
r=func()

ret=r.__next__()
print(ret)
ret=r.__next__()
print(ret)
ret=r.__next__()
print(ret)
ret=r.__next__()
print(ret)
# ret=r.__next__()
# print(ret)

def xrange(n):
print('start')
start=-1
while True:
if start>n:
return
else:
yield start
start +=1
#obj叫做生成器,具有一种生成能力
obj=xrange(5)
#具有访问能力,迭代器
ob1=obj.__next__()
ob2=obj.__next__()
ob3=obj.__next__()
ob4=obj.__next__()
ob5=obj.__next__()
ob6=obj.__next__()
#ob7=obj.__next__()
print(ob1,ob2,ob3,ob4,ob5,ob6)

'''
B、迭代器
'''
a=iter([11,22,33,44,55,66])
print(a.__next__())