zoukankan      html  css  js  c++  java
  • day11 ,12 闭包 迭代器 生成器

    1.闭包

    函数名第一类对象

           1函数名其实就是变量名

        2可以像变量一样互相赋值.

           3 可以作为函数的参数,进行传递

        4 可以作为返回值返回

           5可以作为集合的元素进行存储
      内部函数对外部函数中的变量的调用
      def outrt():
           a=10
           def innerr():
               a
               return

      好处:
          保护变量
          常住内存
      2.迭代器
         1. Iterable:  可迭代的.里面有 __iter__()
        2. Iterator:  迭代器. 里面有__iter__() 还有 __next__()
      特点:
        1,节省内存
        2,惰性机制(只有执行__next__()才会取值)
        3,只能向前取值,不能反复
      dir() #查看数据可执行操作的方法
      isinstance() #判断xxx对象是否是xxx类型
      __name__() #查看函数的名字
      __doc__() #查看函数的文档注释
      lst=[1,2,3]
      it=lst.__iter__()
      while 1:
          try:
              it.__next__()
          except StopIteration:
              break
     3.生成器
         生成器的本质就是迭代器
         生成器由生成器函数来创建或者通过生成器表达式来创建
     4.生成器函数
         生成器函数:在函数中return换成yield.这个函数是生成器函数
         def func():
             yield
         gen=func()  #函数并不会执行,而是创建一个生成器对象
         取值:
             gen.__next__()  #下一个
             gen.send()    #可以给上一个yield传值,第一次执行不能用send()
         特性:
             1.节省内存
             2.惰性机制
             3.只能向前
     5.各种推导式
             1.列表推导式: [结果 for循环 if条件]
             2.字典推导式: { key: value for循环 if条件}
             3.集合推导式: {key for循环 if条件}
     6. 生成器表达式(笔试题)
         (结果 for循环 if条件)
      # 计算两个数的和
      def add(a, b):
          return a + b
      def test():  # 生成器函数
          for t in range(4):
            yield t
      g = test()
      for n in [2, 10]:
          g = (add((n, i) for i in g))
      print(list(g))


         惰性机制
         记录在内存中的一段代码.

  • 相关阅读:
    setContentView和inflate区别
    eclipse中自动添加注释(作者,时间)
    ImageLoader must be init with configuration before using
    repo用法详解
    SQL 中的N'xx'的作用
    DataRow复制一行到另一个DataTable
    MS SQL SERVER搜索某个表的主键所在的列名
    Win2008 Server R2个人PC化设置
    C# DataTable的詳細用法
    如何解决arcmap中的反走样问题。
  • 原文地址:https://www.cnblogs.com/litieshuai/p/9670473.html
Copyright © 2011-2022 走看看