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)  # 再次查看一下生成器的当前的返回值
    
    
    
     
  • 相关阅读:
    Raw图像格式
    Basler相机外部触发设置(Halcon)
    C# 丢弃串口缓冲区 Serialport.DiscardInBuffer,DiscardOutBuffer
    ASCII 码
    Xcopy 使用详解
    Qt 信息提示框QMessageBox用法
    Qt 调整图片大小适应QLabel
    C++取整
    Qt QTableView数据列宽度自适应, 横向填满表格
    Qt 事件总结(鼠标、键盘) QMouseEvent、QKeyEvent
  • 原文地址:https://www.cnblogs.com/xuwenwei/p/14408448.html
Copyright © 2011-2022 走看看