zoukankan      html  css  js  c++  java
  • 《Python学习之路 -- Python基础之生成器》

      生成器可以理解为一种数据类型,这种类型自动遵循了可迭代协议,与其他数据类型不一样,其他数据类型需要通过调用__iter__()方法生成可迭代对象才遵循。也就是说,生成器本质上就是可迭代对象。在Python中,生成器有两种表现形式:生成器函数和生成器表达式

    生成器函数:

    # 生成器函数其实与普通的函数基本一致,不同的是生成器函数通过yield关键字来设置返回值,而且在同一个函数中可以使用多个yield
    def test_yield():
        yield 1
        yield 2
        yield 3
        yield 4
    
    # 调用生成器函数,返回的就是一个生成器对象
    test = test_yield()
    print(test)  # generator object
    # 通过生成器对象就可以直接调用__next__()方法拿到函数中的yield返回值
    print(test.__next__())  # 拿到第一个yield的值 —— 1
    print(test.__next__())  # 拿到第二个yield的值 —— 2
    print(test.__next__())  # 拿到第三个yield的值 —— 3
    print(test.__next__())  # 拿到第四个yield的值 —— 4
    
    # 如果yield之间还存在其他逻辑语句,则也会执行,也就是说,程序遇到yield关键字就暂停,下次执行则会重这个地方开始往下执行
    def test2_yield():
        print('first')
        yield 1
        print('second')
        yield 2
        print('third')
        yield 3
    
    # 拿到生成器对象
    test2 = test2_yield()
    print(test2.__next__())  # first 1
    print(test2.__next__())  # second 2
    print(test2.__next__())  # third 3

    生成器表达式:

    # 生成器表达式:(三元运算符)
    test = (i for i in range(5))
    print(test)  # generator object
    print(test.__next__())  # 0
    print(test.__next__())  # 1
    print(test.__next__())  # 2
    print(test.__next__())  # 3
    print(test.__next__())  # 4
  • 相关阅读:
    php 获取文件的md5
    php 获取远程文件大小
    chrome 浏览器,大屏显示
    Mac 中Java项目打包上线
    如何在苹果M1芯片 (Apple Silicon) 上安装 JDK 环境
    Mysql 替换数据中的部分内容,比如迁移服务器,需要修改图片地址
    docker安装指定版本minio
    docker 查询镜像并删除
    docker 容器名称已存在
    docker 安装minio
  • 原文地址:https://www.cnblogs.com/jonas-von/p/8973741.html
Copyright © 2011-2022 走看看