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))


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

  • 相关阅读:
    (14)python函数与变量
    ①③python中的字符串与字符编码
    ①②python文件操作及文件增删改查
    rsa公钥私钥
    MySQL创建数据库和表
    Rsync + Innotify 部署实例
    LNMPT部署示例
    Nginx 调优
    Nginx 二进制方式安装
    wget & curl 命令
  • 原文地址:https://www.cnblogs.com/litieshuai/p/9670473.html
Copyright © 2011-2022 走看看