zoukankan      html  css  js  c++  java
  • python-生成器模板实例介绍

    def create_num(all_num):
    print('---1---')
    a, b = 0, 1
    current_num = 0
    while current_num < all_num:
    print('---2---')
    yy = yield a # 如果函数中 有yield 语句,那么就不再是函数了,而是一个生成器模板
    print(yy)
    print('---3---')
    a, b = b, a + b
    current_num += 1


    obj = create_num(10) # 如果调用函数时,发现函数内有 yield 语句, 那么这个就不是函数,而是一个生成器
    print(type(obj)) # <class 'generator'>

    ret = next(obj) # 进行到yeild 停止运行
    print(ret)

    # 结果如下
    # ---1---
    # ---2---
    # 0

    ret = next(obj) # 然后从上次停止的地方运行
    print(ret)
    # 结果如下
    # None # next 不可以对 yield a 的结果进行赋值
    # ---3---
    # ---2---
    # 1

    ret = obj.send('测试')
    # send 可以对 yield a 的结果进行赋值
    # (注释:第一次运行生成器时,假如用send方法会报错,因为没有地方存放值,可以把变量改为Nono,或者用next方法)
    print(ret)

    # 结果
    # 测试
    # ---3---
    # ---2---
    # 1
  • 相关阅读:
    程序猿节日快乐!
    Haxe UI框架StablexUI的使用备忘与心得(一)
    sudo fdisk -l
    Win7下硬盘安装fedora17
    盎司
    arm-linux工具
    GSM900TCP/UDP连接
    STC51几种简单的延时函数
    STC51六中中断配置点亮一个LED
    LCD1602小程序
  • 原文地址:https://www.cnblogs.com/fuyouqiang/p/11775552.html
Copyright © 2011-2022 走看看