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)  # 再次查看一下生成器的当前的返回值
    
    
    
     
  • 相关阅读:
    关于windows线程的各种状态
    《深入理解计算机系统》(第二版)第二章练习题3
    《深入理解计算机系统》(第二版)第二章中的一练习题2
    Linux进程/线程模型
    用户进程中执行的操作系统
    关于操作系统模型
    《深入理解计算机系统》(第二版)第二章中的一题目
    并发问题互斥(Dekker算法和Peterson算法)
    概率问题:星期二出生的孩子
    Yii添加扩展加载Ckeditor 4.0以上版本
  • 原文地址:https://www.cnblogs.com/xuwenwei/p/14408448.html
Copyright © 2011-2022 走看看