python 生成器generator

1.使用()
a=[x for x in range(10)]
print(type(a)) #list
print(isinstance(a,Iterator)) #false

b=(i for i in range(1000000000000000000000000))#cpu不会卡死
print(type(b)) #generator
print(isinstance(b,Iterator)) #true
while True:
try:
print(next(b))
except Exception as e:
print(e)
2.使用yield,
next会催动程序从yield运行到取出下一个yield的值返回(卡在这)
def fib():
a=1
b=1
n=0
while True:
a,b=b,a+b
yield b
f=fib() #创建生成器
for i in f: #此处相当于next(f)
print(i)



send传值+next:
def f():
for i in range(10000000000000000000):
if i%2==0:
r=yield i
print('这是第 %s个'% r)

f=f()
print(next(f))
print(f.send('1'))
print(f.send('2'))
print(f.send('3'))
posted @ 2017-07-14 22:18  wangxingg  阅读(93)  评论(0)    收藏  举报