zoukankan      html  css  js  c++  java
  • 生成器和生成器函数以及各种推导式

    1. 生成器
    本质就是迭代器.
    一个一个的创建对象
    创建生成器的方式:
    1. 生成器函数
    2. 通过生成器表达式来获取生成器
    3. 类型转换(看不到)
    2. 生成器函数 (重点)
    生成器函数中包含 yield , 返回数据和return差不多.
    return会立即结束这个函数的执行
    yield 可以分段的执行一个函数

    生成器函数在执行的时候返回生成器. 而不是直接执行此函数

    能向下执行的两个条件:
    __next__(), 执行到下一个yield
    send(), 执行到下一个yield, 给上一个yield位置传值

    所有的生成器都是迭代器都可以直接使用for循环
    都可以使用list()函数来获取到生成器内所有的数据

    生成器中记录的是代码而不是函数的运行
    def func():
    print("我的天哪 ")

    yield "宝宝"

    gen = func() # 创建生成器. 此时运行会把生成器函数中的代码记录在内存
    当执行到__next__(), 运行此空间中的代码, 运行到yield结束.

    优点: 节省内存, 生成器本身就是代码. 几乎不占用内存
    特点: 惰性机制, 只能向前. 不能反复

    3. 各种推导式 (诡异)
    列表推导式 [结果 for循环 if]
    字典推导式 {结果(k:v) for循环 if}
    集合推导式 {结果(k) for循环 if}

    4. 生成器表达式 (重点)
    (结果 for循环 if)

  • 相关阅读:
    软件开发术语
    网络规划与设计
    MPLS LDP协议
    MPLS 基础
    CallAfter
    LongRunningTasks
    Non-blocking GUI
    WorkingWithThreads
    Python: Running Ping, Traceroute and More
    wxPython and Threads
  • 原文地址:https://www.cnblogs.com/selina1997/p/10102787.html
Copyright © 2011-2022 走看看