• python之路-day12-迭代器闭包


    一、昨日内容回顾

      1、函数名

      a、函数名是一个变量名

      b、可以作为集合类的元素

      c、可以作为参数进行传递

      def func(fun):

        fn()

      d、可以作为返回值返回

      def outer():

        def inner():

          xxx

        return

      2、闭包

      内层函数对外层函数的变量的访问

        def outer():

          a = 10

          def inner():

            print(a)

          return inner

        ret = outer() 

        xxxxx

        ret()

       作用:

          1、保护变量:局部变量。自己函数中访问

          2、让一个变量常驻内存  

      3、迭代器

      a、特点:

        1、省内存

        2、惰性机制,不访问__next__() 就没有值。

        3、只能向前。不能反复

      b、在数据中包含了__iter__()  可迭代对象

      c、如果包含了__next__()  迭代器

      d、"__iter__" in dir(数据)

      e、"__next__" in dir(数据)

      from collecttions import Iterable, Iterator

      Iterable: 可迭代的

      Interator: 迭代器

      isinstance(对象,类型)

    二、今日主要内容

      1、迭代器

        __iter__()  获取迭代器

        __next__()  下一个

      

      2、生成器

        a、本质就是迭代器

        b、两种方式写生成器

          1、生成器函数

          2、生成器表达式

      3、生成器函数

        a、函数内部有yield.  yield 也是返回 与 return类似(切记函数中不要return和yield一起使用,很low)

        b、yield 可以把函数分段执行

        c、生成器函数被调用的时候,返回生成器

          def func():

            yield

          g = func()  -  得到生成器

        d、生成器的用法和迭代器基本一致

        e、__next__()  开始执行生成器。  执行到yield。直到没有yield。抛出StopIteration

        f、send() 可以给上一个yield传值

        g、生成器的特点:

          1、省内存

          2、惰性机制,不访问__next__() 就没有值

          3、只能向前。不能反复

      4、各种推导式(简单)

        列表推导式 [结果  for循环  if语句]

        字典推导式 {key: value  for循环  if判断 }

        集合推导式 {key  for循环  if判断}

      5、生成器表达式  (结果  for循环  if判断)

        惰性机制,不访问__next__() 就没有值

        只能向前,不能反复。

  • 相关阅读:
    转载:SuperMap 网络带宽对B/S项目的影响有多大?如何计算所需要的带宽?
    转载:使用JWT做用户登陆token校验
    转载:互联网在线地图平台对比分析
    jmeter计时器讲解
    ReactNative setNativeProps
    关于xxx.h file not found 的问题
    注册推送通知
    ios ViewController present不同的方向
    ReactNative常见报错
    ios 后台模式
  • 原文地址:https://www.cnblogs.com/alvin-jie/p/9890863.html
Copyright © 2020-2023  润新知