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结束

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

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

  • 相关阅读:
    bzoj 2882: 工艺 后缀自动机
    bzoj 2002: 弹飞绵羊 Link-Cut-Tree
    bzoj 3881: [Coci2015]Divljak AC自动机
    bzoj 2553: [BeiJing2011]禁忌 AC自动机+矩阵乘法
    bzoj 3172: [Tjoi2013]单词 fail树
    bzoj 2434: 阿狸的打字机 fail树+离线树状数组
    bzoj 1030: 文本生成器 AC自动机+dp
    SAS FORMAT 逻辑库存储 【输出格式 没有找到或无法加载】解决方法
    PROC UNIVARIATE 简单示例
    SAS ODS GRAPHICS SGPLOT 画图 指存放定路径、名称、指定格式
  • 原文地址:https://www.cnblogs.com/heheda123456/p/10104993.html
Copyright © 2011-2022 走看看