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)  # 再次查看一下生成器的当前的返回值
    
    
    
     
  • 相关阅读:
    Java中常见时间类的使用
    springboot2.0介绍1
    Element-ui-Basic
    Java开发中的23中设计模式详解(一)工厂方法模式和抽象工厂模式
    CSS3 变形、过渡、动画、关联属性浅析
    Webpack 入门教程
    ES6对象简洁语法
    如何下载ts文件
    PPT转PDF
    python实践
  • 原文地址:https://www.cnblogs.com/xuwenwei/p/14408448.html
Copyright © 2011-2022 走看看