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

    1. 生成器 只有在调用时才会生成相应的数据
     2 . 只记录当前的位置
    3 . 只有一个__next__()

    f = (x for x in range(10)) #一个简单的生成器 

    print(f.__next__())

    费波纳生成器(举例1)

    def fib(max):

          n,a,b = 0, 0, 1

          while n < max:

               yeild b         #断点和返回数值

               a, b = b, a+b    # r = (b, a+b)    a = r[0]   b = r[1] 

                n = n + 1

            return '--done--'

    g = fib(6)

    print(g)  # 可以看出g 是生成器

    while True:

             try:

                 print(g.__next__())

              except StopIteration as e:

                  print('not value',e.value)   # e.value = '--done--'

                  break 

    生成器包子(举例2)

    def generate_baozi(name):

          print('%s准备吃包子了‘%name)

          while True:

                   baozi = yield    #baozi 是一个[] 值

                   print('%s 吃了 %s 个包子’%(name. baozi)        #产生了一个生成器

    def consumer_baozi(name)

    c = generate_baozi('A')     生成了一个生成器c

    c1 = generate_baozi('B')    生成了一个生成器c1

    c.__next__()              #运行一次生成器c 输出('%s准备吃包子了‘%name)

    c1.__next__()            # 运行一次生成器 c2 输出('%s准备吃包子了‘%name)

    for i in range(10):

            print('%s 准备好了包子‘%(name))

            c.send(i)  # 往生成器c传值

            c1.send(i)  #往生成器c1传值

    consumer('alex') 

  • 相关阅读:
    Using Redis as Django's session store and cache backend
    Celery 和 Redis 入门
    centos 安装 rabbitmq
    CentOS 6 安装 Python3.5以及配置Django
    python metaclass 入门简介
    uWSGI其三:uWSGI搭配Nginx使用
    CentOS 6.5 安装 Nginx 1.7.8 教程
    基于nginx和uWSGI在Ubuntu上部署Djan
    CentOS 6.5 下安装 Redis 2.8.7
    查看Selinux和关闭Selinux
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/9048074.html
Copyright © 2011-2022 走看看