zoukankan      html  css  js  c++  java
  • PYthon之路Day12

    生成器

    • 核心:生成器的本质就是一个迭代器

      • 程序员自己写的一种迭代器

    • 作用:节省空间

    • 生成器可以使用for进行遍历

    • 生成器编写方式:

      • 基于函数编写

        • def func():
             print('这是一个函数')
             return '函数'
          func()
        • def func():
             print('这是一个函数')
             yield '函数'
          func()    #生成生成器
          print(func())    #获取到的是一个生成器的内存地址
          print(func()._next_())  #生成一个生成器,启动一个生成器
        • 函数体中出现yield代表要声明一个生成器(generator)

        • 一个yield对应一个next()

      • 推导式方式编写

    • yield 和return的区别:

      • 相同同点:

        • 都是返回内容

        • 都可以返回多次,但是return会终止函数,只执行一个

      • 不同点:

        • return 终止函数,yield 是暂停生成器

        • yield 能记录当前执行位置

    • 三者总结:

      • 可迭代对象:str list tuple

        • 优点:节省空间,取值方便,使用灵活(具有自己的私有方法)

        • 缺点:大量消耗内存

      • 迭代器:

        • 优点:节省空间

        • 缺点:不能直接查看值,使用不灵活,消耗时间,一次性,不可逆行

      • 生成器:

        • 优点:节省空间,认为定义

        • 缺点:不能直接查看值,消耗时间,一次性,不可逆

    • 使用场景:当文件或内容数据较大时,建议使用生成器

    • 文件句柄本质上是一个迭代器

    • python 2中的xrange()与python 3中的range()一样,都是可迭代对象

      • xrange()返回的是列表,range返回的是迭代对象(range本身)

    • 迭代器(iterator) 生成器(generator)

      • 没有send()方法的时迭代器,有send()方法的就是一个生成器

        • send()-- 发送,具有启动(_next_())和发送两个功能

        • 第一次使用send()时括号中内容必须是None

    • yield from 将可迭代对象的元素逐个返回;yield是一次性返回

      • for i in 迭代器

    推导式

    • 列表推导式

      • print([i for i in range(10)])

      • print([i for i in range(10) if i%2==0])

    • 集合推导式

      • print{i for i in range(10)}

      • print({i for i in range(10) if i%2==0})

    • 字典推导式:

      • print({i:i+1 for i in range(10)})

      • print({i:i+1 for i in range(10) if i%2==0})

    • 生成器推导式:(面试题)

      • print((i for i in range(10)))

      • print((i for i in range(10) if i>5))

    内置函数一

    一带而过的

    • all() any() bytes() callable() chr() complex() divmod() eval() exec() format() frozenset() globals() hash() help() id() input() int() iter() locals() next() oct() ord() pow() repr() round()

    • 禁止使用

      • eval() -- 神器一

      • exec() -- 神器二

    • hash() -- 就是区分可变数据类型和不可变数据类型

    • help() -- 查看帮助信息

    • callable() -- 查看对象是否可调用

    • float() -- 转换为浮点数

    • complex() -- 复数

    • bin() -- 十进制转二进制

    • oct() -- 十进制转八进制

    • hex() -- 十进制转十六进制

    • divmod() -- 求(商,余),返回元组

    • round(3.5312,2) -- 保留小数位

    • pow(2,2) -- 求幂

      • pow(2,2,3) -- 求幂后的余

    • print(bytes('你好',encoding=’utf-8))--将字符串编码

    • ord('b') -- 通过元素获取当前表位的序号

    • chr(98) -- 通过表位序号查找元素

    • repr() -- 查看数据的原生态(给程序员使用)

    • print() -- 给用户使用的

    • all() -- 判断容器中的元素是否都是真

    • any() -- 判断容器中的元素是否有一个为真

    • globals() -- 查看全局的变量,返回的是字典

    • locals() -- 查看当前空间的变量

    •  

  • 相关阅读:
    asyncio
    pytz
    celery
    xml
    jsonpath
    requests
    SQLite 数据库存储
    SQLite 数据库存储
    Android 记住密码功能
    Android 记住密码功能
  • 原文地址:https://www.cnblogs.com/zlx960303/p/11962461.html
Copyright © 2011-2022 走看看