zoukankan      html  css  js  c++  java
  • 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. 代表了一个无限的流。如果我们要读取并使用的内容远远超过内存,但是需要对所有的流中的内容进行处理,那么生成器是一个很好的选择,比如可以让生成器返回当前的处理状态,由于它可以保存状态,那么下一次直接处理即可。
  • 相关阅读:
    HTTP 和 HTTPS
    HTTP 协议
    基础查询
    python编程从入门到实践笔记
    python-32-类的组合与初识继承
    python-31-初识面向对象与自定义类
    python-30-异常处理
    python-29-模块与包导入
    python-28-序列化模块
    python-27-其他常用模块(二)
  • 原文地址:https://www.cnblogs.com/zj420255586/p/12167662.html
Copyright © 2011-2022 走看看