带有 yield 的函数在 Python中的使用介绍

带有 yield 的函数在 Python中的使用介绍

 菜鸟观数据 2019-10-19 18:17

带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ,通过下面的例子来说明。

1. 简单输出斐波那契数列前 N 个数

#!/usr/bin/python

# -*- coding: UTF-8 -*-

def fab(max):

n, a, b = 0, 0, 1

while n < max:

print b

a, b = b, a + b

n = n + 1

fab(5)

执行以上代码,我们可以得到如下输出:

1  1  2  3  5 

2. 使用 yield 的版本

实例

#!/usr/bin/python

# -*- coding: UTF-8 -*-

def fab(max):

n, a, b = 0, 0, 1

while n < max:

yield b # 使用 yield

# print b

a, b = b, a + b

n = n + 1

for n in fab(5):

print n

第四个版本的 fab 和第一版相比,仅仅把 print b 改为了 yield b,就在保持简洁性的同时获得了 iterable 的效果。

调用第四版的 fab 和第二版的 fab 完全一致:

1  1  2  3  5 

结论:yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章