python-生成器

#!/usr/local/bin/python3
# -*- coding:utf-8 -*-
'''
Generator
生成器:只有在调用的时候才会生成相应的数据
        只记录当前位置
优点:1,可以有效节省内存,因为在不调用生成器的时候,生成器是不会生成数据的,并且生成器每次只生成一个数据
     2,可以实现单线程并发

'''
# ----------斐波那契数列----------
def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        # 将原来的 print(b) 改为 yield b 后,就做出了一个生成器
        # yield 用来返回值,且保存了函数的中断状态
        yield b
        a, b = b, a+b
        n += 1
    # 此处的return 语句用来抛出异常的值
    return "---此处为异常---"
# 此时f就代表了一个生成器,并将6传入,其他什么都没干
f = fib(6)
while True:
    try:
        # print(next(f))效果一样
        print(f.__next__())
    except StopIteration as e:
        print("exception:", e.value)
        break

  

posted @ 2018-05-16 16:41  Octopuslnlzy  阅读(196)  评论(0编辑  收藏  举报