__author__ = 'ZHHT'
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#返回当前执行到的函数的返回值。并保持当前执行的状态。这时候先执行别的。下次在执行的时候,接者上次调用的位置,继续往下执行代码。
def fib(num):
    n = 0
    a,b=0,1
    while n <num:
        yield b
        a,b=b,a+b
        n+=1
    return '完成'

f = fib(5)

while True:
    try:
        x = next(f)
        print("value%d"%x)
    except StopIteration as e:
        print("生成器返回值--'%s'"%e.value)
        break

#第二种是例子:
def gen():
    i = 0
    while i < 5:
        temp = yield i
        print(temp)
        i+=1

f = gen()

print(next(f))
print(next(f))
print(next(f))
#它和上面的相同点就是能够继续迭代执行。不通过点是,流程走到yield 返回了i的值,在执行后面的时候temp则接受到的是None,而send则是发了个值贵temp接受就这样一个情况
print(f.send("haha1"))
print(f.send("haha2"))

  

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!