zoukankan      html  css  js  c++  java
  • Python 生成器 迭代器函数

    一,生成器函数。

    当函数中包含特殊字符,yield 的时候, 这个函数就是一个特殊的函数------生成器函数。
    1. 函数(),并不开始执行函数,只是表示获取到了一个生成器。
    2. 只有调用生成器的__next__()方法的时候,才开始执行生成器函数中的内容。
    3. 调用第一个 __next__()方法的时候,只是执行到第一个 yield 为止。
    下一个__next__()方法,从这个yield 之后的内容开始执行。并且到第二个 yield 为止。
    4. yield 后面的是函数执行__next__() 当前方法的返回值。

    生成器函数会返回yield后面的返回值,并记录当前__next__()方法运行到的位置。作为下一个__next__()方法的起始位置。
    # !/usr/bin/env python
    # -*- coding:utf8 -*-
    """
    当函数中包含特殊字符,yield 的时候, 这个函数就是一个特殊的函数------生成器函数。
    1. 函数(),并不开始执行函数,只是表示获取到了一个生成器。
    2. 只有调用生成器的__next__()方法的时候,才开始执行生成器函数中的内容。
    3. 调用第一个 __next__()方法的时候,只是执行到第一个 yield 为止。
       下一个__next__()方法,从这个yield 之后的内容开始执行。并且到第二个 yield 为止。
    4. yield 后面的是函数执行__next__() 当前方法的返回值。
    """
    
    
    # 定义一个函数
    def func1():
        print(11)
        yield 1
    
        print(22)
        yield 2
    
        print(33)
        yield 3
    
    
    # 仅仅获取到了一个生成器函数,并不开始执行函数
    result = func1()  # result 只是生成器的一个实例化的对象
    print(result)
    
    ret = result.__next__()  # 调用__next__(),函数开始执行,并且到第一个 yield 为止。
    print(ret)  # 查看一下生成器的当前的返回值
    
    ret2 = result.__next__()  # 再次调用__next__(),函数从上次yield后面的内容开始执行,并且到下一个 yield 为止。
    print(ret2)  # 再次查看一下生成器的当前的返回值
    
    
    
     
  • 相关阅读:
    ORACLE中dba,user,v$等开头的常用表和视图
    rman restore spfile from backup
    oracle11g设置归档模式和非归档模式
    Oracle数据文件改名
    Linux下rz/sz安装及使用方法
    oracle数据库rman备份计划及恢复
    高级数据查询SQL语法
    关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询
    关系数据库常用SQL语句语法大全
    微服务化的基石——持续集成【转】
  • 原文地址:https://www.cnblogs.com/xuwenwei/p/14408448.html
Copyright © 2011-2022 走看看