• Python生成器


    1. 什么是生成器

    创建python迭代器的过程虽然强大,但是很多时候使用不方便。生成器是一个简单的方式来完成迭代。简单来说,Python的生成器是一个返回可以迭代对象的函数。

    2. 怎样创建生成器

    在一个一般函数中使用yield关键字,可以实现一个最简单的生成器,此时这个函数变成一个生成器函数。yieldreturn返回相同的值,区别在于return返回后,函数状态终止,而yield会保存当前函数的执行状态,在返回后,函数又回到之前保存的状态继续执行

    生成器函数与一般函数的不同,以下是几点不同:

    • 生成器函数包含一个或者多个yield
    • 当调用生成器函数时,函数将返回一个对象,但是不会立刻向下执行
    • 像__iter__()和__next__()方法等是自动实现的,所以我们可以通过next()方法对对象进行迭代
    • 一旦函数被yield,函数会暂停,控制权返回调用者
    • 局部变量和它们的状态会被保存,直到下一次调用函数终止的时候,StopIteraion会被自动抛出

    3. 生成器的表达式

    Python中,有一个列表生成方法,比如:

    # 产生1,2,3,4,5的一个列表
    [x for x in range(5)]
    

    如果换成[]换成(),那么会成为生成器的表达式。

    (x for x in range(5))
    

    4. 为什么使用生成器

    1. 更容易使用,代码量较小
    2. 内存使用更加高效。比如列表是在建立的时候就分配所有的内存空间,而生成器仅仅是需要的时候才使用,更像一个记录。
    3. 代表了一个无限的流。如果我们要读取并使用的内容远远超过内存,但是需要对所有的流中的内容进行处理,那么生成器是一个很好的选择,比如可以让生成器返回当前的处理状态,由于它可以保存状态,那么下一次直接处理即可。
  • 相关阅读:
    X oracle 12c new feature: Automatic Report Capturing Feature
    X 搭建Postgresql configure: error: readline library not found
    X windows上利用vmvare搭建共享存储搭建rac
    洛谷P1397 [NOI2013]矩阵游戏
    BSOJ 6289【NOIP2018模拟赛】黄昏
    BSOJ 4282 秀秀的照片
    BSOJ 5185【11.08题目】暴力破解
    BSOJ 5100 简单的区间
    VUE 项目自适应屏幕和浏览器
    yarn npm区别
  • 原文地址:https://www.cnblogs.com/zj420255586/p/12167662.html
Copyright © 2020-2023  润新知