zoukankan      html  css  js  c++  java
  • 生成器迭代器

    函数名  →  第一类对象

    函数可以复制

    函数可以作为集合类的元素

    函数可以作为参数传递

    函数可以作为返回值返回

    2,闭包

    语法: 内层使用外层函数的变量

    def wrapper():

      name = "周杰伦"

      def inner():

        print(name)

      return inner

    ret = wrapper()

    ret()

    如何查看一个函数是否是闭包

    函数名.__closure__有值就是闭包,none就不是闭包

    优点:

    1.保护变量不被侵害

    2.可以让一个变量常驻内存

    迭代器

    在数据中包含了__iter__是一个可迭代对象

    for循坏机制

    it= lst.__iter__()

    while 1:

      try:

        it__next__()

      except   StopIteration:

        break

    优点:

      1,节省内存

      2.,惰性机制

      3,只能向前,不能反复

    官方查看xxx是迭代器,可迭代对象

    from collections import iterable iterator

    isinstance(对象,iterable)

    isinstance(对象,iterator)

    迭代器一定是可迭代的

    可迭代的不一定是迭代器

    生成器

      生成器函数中包含yield:返回数据和return差不多

      return会立即结束这个函数的执行

      yield可以分段的执行一个函数

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

    能向下执行的两个条件

      __next__() 执行到下一个yield

      send(),执行到下一个yield 给上一个yield传值

    所有的生成器都是迭代器都可以直接使用for循环

    都可以使用list()函数来获取到生成器内所有的数据

    生成器中记录的是代码而不是函数的执行

    def func():

      print("我的天那")

      yield

    gen = func()  创建生成器,此时运行会把生成器函数中的代码记录在内存中

    当执行到__next__() 运行此空间中的代码运行到yield结束

    优点:节省内存,生成器本身就是代码,几乎不占用内存

    特点:惰性机制,只能向前,不能反复

  • 相关阅读:
    C++ 获取ms级的计时
    基于UDP的IP对IP的客户端程序
    stm32 keil生成bin文件
    xmos 加密
    DMX512程序介绍
    WS2812原理及实现
    MFC 通过按钮调用自对话框 给按钮加载位图 给对话框添加背景
    4*4矩阵键盘FPGA扫描实现
    FIFO
    Modelsim建立UVM环境
  • 原文地址:https://www.cnblogs.com/heheda123456/p/10104993.html
Copyright © 2011-2022 走看看