前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python之yield生成器

Python之yield生成器

作者头像
py3study
发布2020-01-15 00:59:47
3560
发布2020-01-15 00:59:47
举报
文章被收录于专栏:python3python3

1、对比range和xrange的区别:

代码语言:javascript
复制
>>> print range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print xrange(10)
xrange(10)

range()和xrange()的区别在于,range会在内存中创建所有指定的数字,而xrange不会立即创建,只有在迭代循环时,才去创建每个数组。

这就类似于yield和return的区别

2、yield和return的区别

当定义一个函数时,如果函数的代码出现了return,则函数立马终止,并返回结果。就算函数下面有多个return,也只会返回第一个return值。

示例:

代码语言:javascript
复制
def func():
    return 1
    return 1
    return

print func()
1

yield的原理:

代码语言:javascript
复制
func1():
    I func1():
    I
代码语言:javascript
复制
1
2
3

当第一次循环是,获取值1,此时yield不会退出函数,会记住yield 1这个位置,继续执行函数,下一次就到yield2,在下一次到yield3

return和yield的区别在于,return返回结果后会跳出函数,不再执行函授后面的代码,而yield不会跳出函数,并且会记住函数代码执行位置,下次继续执行。

xrange()的原理:

代码语言:javascript
复制
def mrange(arg):
    seed = 0
    while True:
        seed =seed + 1
        if seed > arg:
            return
        else:
            yield seed
for i in mrange(10):
    print i

每次执行一次循环,会生成一个值。知道seed>arg为止。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档