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)
  • 相关阅读:
    数据切分——Atlas介绍
    HDU 5015 233Matrix (构造矩阵)
    Wincc操作数据库SQLSERVER
    UIWebView 设置背景为透明
    29个你必须知道的Linux命令
    【读书笔记】iOS-UIWindow-WindowLevel
    linux下uart应用编程
    Java Web HelloWorld!
    手把手图文教你eclipse下如何配置tomcat
    Tomcat安装及配置教程
  • 原文地址:https://www.cnblogs.com/zhangrenguo/p/12560154.html
Copyright © 2011-2022 走看看