zoukankan      html  css  js  c++  java
  • day12 Pyhton学习

    一.昨日内容回顾

      1.函数名

       函数名是一个变量名

           

       可以作为集合类的元素

       可以作为参数进行传递

       def  func(fn):

         fn()

       可以作为返回值返回

       def outer():

         def inner():

           xxx

           return inner

      2.闭包

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

        def  outer():

          a = 10

          def inner():

            print(a)

            return  inner

         ret  =  outer()

         xxxxxx

        ret()

        

        作用:

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

          2.让一个变量常驻内存

       3.迭代器

        特点:

          1.省内存

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

          3.只能向前,不能反复

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

        如果包含了__next__()  迭代器

        "__iter__" in dir (数据)

        "__next__" in dir (数据)

        from collections import Iterable ,Iterator

        Iterable :可迭代的

        Iterator: 迭代器

        isinstance(对象,类型)

    二.今日主要内容

      迭代器

        __iter__() 获取迭代器

        __next__() 下一个

        

      生成器

        本质就是迭代器

        两种方式写生成器

          1.生成器函数

          2.生成器表达式

      

      生成器函数

        函数内部有yield,yield 返回 -> return

        yield可以把函数分段执行

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

        def dunc():

          yield

        g = func() - 得到生成器

      

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

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

        

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

        

        1.省内存

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

        3.只能向前,不能反复

      各种推导式(简单)

        列表推导式[结果  for循环  if判断]

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

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

      生成器表达式(最难)

        (结果  for循环  if 判断)

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

        只能向前,不能反复

  • 相关阅读:
    tomcat与resin的比较
    Linux Resin 安装配置
    [BZOJ3456]城市规划
    ZJOI 2017 仙人掌
    「LibreOJ NOI Round #1」动态几何问题
    [SDOI2015]约数个数和
    codeforce 940F
    codeforce 940F
    codeforce 940E
    [NOI2009]植物大战僵尸
  • 原文地址:https://www.cnblogs.com/pythonz/p/9890939.html
Copyright © 2011-2022 走看看