zoukankan      html  css  js  c++  java
  • python生成器yield和send

    创建生成器

     1 #第一种创建生成器的方法
     2 #使用()创建生成器,如果使用[]则创建列表
     3 a = (x**2 for x in range(1, 5))
     4 #可以通过next一直产生新的数据,直到最后一个报异常,通过for遍历不会报异常
     5 #也可以使用a.__next__()
     6 print(next(a))#输出1
     7 print(a.__next__())#输出4
     8 print(next(a))#输出9
     9 
    10 #通过for遍历生成器
    11 for i in a:
    12     print(i)
    13 
    14 #第二种创建生成器的方法
    15 def createNum(n):
    16     for i in range(n):
    17         yield i**3
    18 
    19 for i in createNum(5):
    20     print(i)

    生成器的send用法 generator.send(value)

     1 #生成器的send用法 generator.send(value)
     2 def test():
     3     i = 1
     4     while i < 5:
     5         temp = yield i**2
     6         print(temp)
     7         i += 1
     8 
     9 t = test()
    10 #第一次运行只能使用next或者send(None)
    11 print(t.__next__())
    12 #send的作用相当于使生成器继续运行,并且传递的参数为yield的返回值(程序中即temp的值)
    13 print(t.send("Hello World"))
    14 print(t.__next__())#相当于send(None) 此时temp = None
  • 相关阅读:
    Java中hashCode() 和 equals()
    【转】Java操作Excel竟然这么简单!
    SpringMVC上
    网络基础知识(2)
    网络基础知识 (1)
    线程的安全
    多线程
    字符编码ANSI和ASCII区别、Unicode和UTF-8区别
    序列化对象
    IO流_File类
  • 原文地址:https://www.cnblogs.com/xhcdream/p/8304953.html
Copyright © 2011-2022 走看看