专栏首页python3Python之yield生成器

Python之yield生成器

1、对比range和xrange的区别:

>>> 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值。

示例:

def func():
    return 1
    return 1
    return

print func()
1

yield的原理:

func1():
    I func1():
    I
1
2
3

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

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

xrange()的原理:

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为止。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python yield

    为了精通 yield ,你必须要理解:当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象,这有点蹊跷不是吗。

    py3study
  • Python 协程的详细用法和例子

    从句法上看,协程与生成器类似,都是定义体中包含 yield 关键字的函数。可是,在协程中, yield 通常出现在表达式的右边(例如, datum = yiel...

    py3study
  • day01计算机基础

    注意:  这里需要了解 CPU具有向下兼容性(即64位CPU可以兼容运行32位软件或系统,但是32位CPU不能兼容64位的软件或系统)

    py3study
  • 机器学习环境搭建安装TensorFlow1.13.1+Anaconda3.5.3+Python3.7.1+Win10

    方案1. 可以直接从官网https://www.anaconda.com/distribution/,默认下载最新版本,19年3月27日为python3.7.1...

    软测小生
  • 实例解析Docker数据卷+数据卷容器+flocker数据共享+DockerHub操作

    Docker内部数据管理和Docker之间的数据共享为数据卷和数据卷容器,实例解析1.将本地的文件作为容器的数据卷,2.数据卷flocker插件实现容器集群(或...

    王小雷
  • 浅谈蓝鲸平台与驻场大运维的融合实践

    2018年嘉为给众多客户实施了自动化运维项目,使蓝鲸平台这个诞生于互联网公司的产物在各传统行业客户中落地。蓝鲸平台的对运维转型的促进影响作用无疑是巨大的,但是从...

    嘉为科技
  • TensorFlow从0到1 - 1 - Hello, TensorFlow!

    在学习任何新的编程语言时,我们都会在第一时间完成Hello World,以宣告自己开发环境的完美搭建。TensorFlow也不例外。TensorFlow充分考...

    黑猿大叔
  • TensorFlow从0到1丨开篇:Hello TensorFlow !

    我以官方文档为主线,开始对TensorFlow的学习。这期间会把我的理解进行持续的输出,作为《TensorFlow从0到1》系列。它不会止于翻译和笔记、语言和工...

    用户1332428
  • Appium+python自动化(十六)- ADB命令,知否知否,应是必知必会(超详解)

      Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。

    北京-宏哥
  • 从0到1搭建属于自己的服务器

    云计算这个概念从提出到现在已经十多年了,在这些年里,云计算取得了飞速的发展与翻天覆地的变化,而云计算也给我们很多开发者带来了福音,比如早期的微信公众号开发,我们...

    CSDN技术头条

扫码关注云+社区

领取腾讯云代金券