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

    一、什么是生成器?

      在函数内但凡出现yield关键字,再调用函数就不会执行函数体代码,会返回一个值,该值称之为生成器,这个生成器本质就是迭代器。

    def func():
        print('first')
        yield
        print('second')
        yield
        print('third')
        yield
    
    res1 = func()
    print(res1)
    res1.__iter__()
    res1.__next__()

    二、为什么要有生成器

      生成器是一种自定义迭代器的方式。

    三、如何用生成器?

      1、有__iter__方法-->iter()

      2、__next__方法-->next()

      3、for循环

    # def func():
    #     print('first')
    #     yield 1  #暂停
    #     print('second')
    #     yield 2
    #     print('third')
    #     yield 3
    #
    # res = func()
    # print(res)
    # print(res.__iter__().__iter__() is res)
    # # res.__next__()
    # # next(res)  #next会触发函数的从头开始的执行,碰到yield就停掉了。
    # res1 = next(res)  #next拿到返回值兵赋值给res1,当做第一次取值,函数并且暂停到这个位置
    # print('第一次的返回值',res1)
    
    
    
    # def func():
    #     yield 1
    #     yield 2
    #     yield 3
    #
    # res = func()
    # print(next(res))
    # print(next(res))
    # print(next(res))
    # # print(next(res))   #取不到值会报错
    #
    
    
    
    def func():
        print('first')
        yield 1  #暂停
        print('second')
        yield 2
        print('third')
        yield 3
    
    res = func()
    
    
    for item in res:       #for循环会先调用res的iter()方法拿到迭代器对象,然后会next()一次res,把结果给item,运行一次否循环的循环体
        # pass
        print(item)
  • 相关阅读:
    apiClould微信三方登录,qq三方登录
    微信小程序 使用环信聊天工具
    某些控件的应用
    记事本(查找与替换)
    记事本部分功能
    Winform——计算器进制转换
    Winform——计算器
    汉企C#面向对象——继承Practice
    汉企C#面向对象——继承
    二分法
  • 原文地址:https://www.cnblogs.com/zhangrenguo/p/12560154.html
Copyright © 2011-2022 走看看