三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 321|回复: 0
打印 上一主题 下一主题

python3 生成器

[复制链接]

1657

主题

1684

帖子

5684

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5684
跳转到指定楼层
楼主
发表于 2017-7-19 08:32:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 Python 中,使用了 yield 的函数被称为生成器(generator)。
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回yield的值。并在下一次执行 next()方法时从当前位置继续运行。
以下实例使用 yield 实现斐波那契数列:
  1. #!/usr/bin/python3

  2. import sys

  3. def fibonacci(n): # 生成器函数 - 斐波那契
  4.     a, b, counter = 0, 1, 0
  5.     while True:
  6.         if (counter > n):
  7.             return
  8.         yield a
  9.         a, b = b, a + b
  10.         counter += 1
  11. f = fibonacci(10) # f 是一个迭代器,由生成器返回生成

  12. while True:
  13.     try:
  14.         print (next(f), end=" ")
  15.     except StopIteration:
  16.         sys.exit()
复制代码
执行以上程序,输出结果如下:
  1. 0 1 1 2 3 5 8 13 21 34 55
复制代码


回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-10-25 00:51 , Processed in 0.041427 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表