• python生成器


    generator

    1.生成器函数:

           函数中有yield的就是生成器函数,执行生成器函数得到一个生成器,生成器具备生成某些东西的能力

           yield具有返回值,退出函数体,保留进度的功能,下次调用__next__功能继续从当前位置开始执行

    2.生成器:

           生成器函数的产物

    3.生成器的意义:

           python2.7中的xrange就是一个生成器函数,但是在3.6中已经被移除

    1 #!/usr/bin env python
    2 # -*- coding:utf-8 -*-
    3 # python 2.7
    4 print(range(10))
    5 print(xrange(10))
    6 '''
    7 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    8 xrange(10)
    9 '''

        其意义在于:range(10)会在内存中一次性生成10个元素,而xrange(10)却得到一个生成器,在需要用的时候再生成某个元素,节约内存

    4.在python3中用生成器实现xrange函数

     1 def xrange(n):
     2     print('start')
     3     start = 0
     4     while start < n:
     5         yield start
     6         start += 1
     7  
     8 obj = xrange(5)
     9 n1 = obj.__next__()
    10 n2 = obj.__next__()
    11 n3 = obj.__next__()
    12 n4 = obj.__next__()
    13 n5 = obj.__next__()
    14 n6 = obj.__next__()
    15 #n7 = obj.__next__()
    16 print(n1, n2, n3, n4, n5, n6)

    5.生成器执行流程

    6、yelid与__next__

    1 # next每遇到一次yield将执行yield以上的程序,
    2 # 然后yield后面的值返回,并记录程序运行的位置
    3 # 等待下一次的__next__和下一次的yield
    4 # yield的作用保存上次执行的状态

     

    
    
    
  • 相关阅读:
    压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate .
    [转](多实例)mysql-mmm集群
    mysql的MMM高可用方案
    压力测试工具
    memcached 的简介、安装、命令
    memcached 最大连接数及其内存大小的设置
    mysql优化
    mysql
    30道Linux面试题
    门户网站架构Nginx+Apache+MySQL+PHP+Memcached+Squid
  • 原文地址:https://www.cnblogs.com/Acekr/p/7467631.html
Copyright © 2020-2023  润新知