zoukankan      html  css  js  c++  java
  • 十一、yield生成器

    1、对比range 和 xrange 的区别
    >>> print range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> print xrange(10)
    xrange(10)
    如上代码所示,range会在内存中创建所有指定的数字,而xrange不会立即创建,只有在迭代循环时,才去创建每个数组。
    ==========================================================
    def func1():
    return 1
    return 2
    return 3
    print (func1())
    问以上结果会打印什么?答案:只有1(因为当它遇到return时代表它的生命周期已经结束,就不会往下再走了)。
    现在我把它改变一下,变成这样,问以上结果会打印什么?
    答案:<generator object func1 at 0x02CF02D8>
    告诉你它是一个生成器,只有你通过for循环才能逐个去调用它
    def func1():
      yield 1
      yield 2
      yield 3
    print (func1())
     
    for i in func1():
    print (i)
    返回
    1
    2
    3
     
    就像
    for i in xrange(10)
    print (i)
    返回
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    因为xrange也是一个生成器
    ============================================================
    自定义生成器(实际上就是在做xrange的功能):
    def nrange(num):
        temp = -1
        while True:
            temp += 1
            if temp >= num:
                return
            else:
                yield temp
    for i in nrange(100): print(i)
    =============================================================
     
  • 相关阅读:
    shell 脚本语法
    discuz pre_forum_postposition表说明
    PHP调试工具Xdebug安装配置教程
    检查用户头像状态的脚本
    PHP 性能监测
    Mysql 索引优化
    MySQL主从复制配置
    vue mixin 混入
    vue渲染方式:render和template的区别
    vue自定义指令directive Vue.directive() directives
  • 原文地址:https://www.cnblogs.com/steven9898/p/11329372.html
Copyright © 2011-2022 走看看