zoukankan      html  css  js  c++  java
  • day07-生成器

     1 一.
     2 含有yield关键字的函数就是生成器函数。
     3 yield不能和return公用,且要写在函数内部。yield也是返回的意思。yield把值返回给函数,函数调用得到一个生成器,里面保存了返回的值。
     4 调用生成器函数之后,函数不执行,返回一个生成器。
     5 生成器的本质是迭代器。生成器generator
     6 从生成器中取值的三个方法:1)__next__  2)for   3)数据类型的强制转换 : 占用内存
     7 
     8 
     9 def wahaha():
    10     for i in range(1000000):
    11         yield '记录当前状态%s'%i
    12 g = wahaha()
    13 count = 0
    14 for n in g:
    15     if count >= 50:        #取50个值
    16         break
    17     print(n)
    18     count += 1
    19 print(g.__next__())
    20 print(g.__next__())
    21 print(g.__next__())
    22 
    23 
    24 def generator():
    25     print(123)
    26     content = yield 1
    27     print(content)
    28     print(456)
    29     yield 2
    30 g = generator()            #调用生成器函数不会执行函数的代码,只会得到一个生成器。所以变量g是生成器。
    31 print(g.__next__())        #g.__next__()获取第一个值,代码执行到yield 1结束,此时停在yield 1这个位置,当后面使用g.send(值),就可以给yield 1传递一个值。
    32 print(g.send('继续加油'))  #send获取下一个值的效果跟__next__一样,只是它获取下一个值的时候给上一个值的位置传递一个值。
    33 
    34 
    35 二.
    36 生成器表达式和列表推导式
    37 l = ['列表推导式%s'%i for i in range(10)]
    38 print(l)
    39 
    40 g = ('生成器表达式%s'%i for i in range(10))  #g 是生成器
    41 print(g)
    42 for i in g:
    43     print(i)
  • 相关阅读:
    IDEA解决Cannot download sources的问题
    Swagger在Springboot项目中的使用
    ElasticSearch(10)—SpringBoot集成ES
    ElasticSearch(9)---Rest风格
    ElasticSearch(8)---IK分词器
    js显示原型和隐示原型
    通俗易懂讲解为什么设计稿都是750px
    关于rem和px全局设置问题
    PHP RSA密文过长加密解密 越过1024的解决代码
    使用https,$_SERVER['HTTPS']却不等于on?
  • 原文地址:https://www.cnblogs.com/python-daxiong/p/10267876.html
Copyright © 2011-2022 走看看