生成器

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

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

  • 作用:节省空间

  • 生成器可以使用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() -- 查看当前空间的变量

PYthon之路Day12的更多相关文章

  1. Python之路,Day12 - 那就做个堡垒机吧

    Python之路,Day12 - 那就做个堡垒机吧   本节内容 项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多 ...

  2. 【Python之路Day12】网络篇之Python操作MySQL

    pymysql是Python中操作MySQL的模块,使用方法和MySQLDB几乎一样. 1. 执行SQL语句 #!/usr/bin/env python3 # -*- coding: utf-8 -* ...

  3. Python之路 Day12

    day12主要内容:html基础.CSS基础 HTML HTML概述: HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标 ...

  4. 初学python之路-day12

    本篇补上字符串的比较:按照从左往右比较每一个字符,通过字符对应的ascii进行比较 一.函数默认值的细节 # 如果函数的默认参数的默认值为变量,在所属函数定义阶段一执行就被确定为当时变量存放的值 a ...

  5. Python之路day12 web 前端(HTML+ css)

    HTML文档 文档树: Doctype Doctype告诉浏览器使用什么样的html或xhtml规范来解析html文档 有和无的区别 BackCompat:标准兼容模式未开启(或叫怪异模式[Quirk ...

  6. 【Python之路Day12】网络篇之Paramiko

    paramiko模块,基于SSH用于连接远程服务器并执行相关操作. 一.安装 pip3 install paramiko 二.使用 1. SSHClient 用于连接远程服务器并执行基本命令 基于用户 ...

  7. Python之路【第一篇】python基础

    一.python开发 1.开发: 1)高级语言:python .Java .PHP. C#  Go ruby  c++  ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...

  8. Python之路

    Python学习之路 第一天   Python之路,Day1 - Python基础1介绍.基本语法.流程控制              第一天作业第二天   Python之路,Day2 - Pytho ...

  9. python之路 目录

    目录 python python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python 基础2 编码转换 pych ...

随机推荐

  1. C# 如何实现完整的INI文件读写类

    作者: 魔法软糖 日期: 2020-02-27 引言 ************************************* .ini 文件是Initialization File的缩写,即配置文 ...

  2. scanf函数中*修饰符的作用,如:%*d

    在scanf函数中,*修饰符可以跳过所在项的输入.如下: #include <stdio.h> int main() { ; printf("请输入:"); scanf ...

  3. js中如果遇到低版本安卓设备调用setTimeout不生效解决办法

    工作中会遇到低版本安卓设备调用setTimeout不生效,既不会报错,里面的函数也不会执行,这里po一个解决办法,如果不执行则执行安卓自己封装的原生的setTimeout方法:sdk.setTimeo ...

  4. mysql随机抽取数据

      -- 慢 ; -- 较慢 SELECT * FROM `table` WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `t ...

  5. MySQL - SQL语句优化方法

    1.使用 show status 了解各种 SQL 的执行频率 mysql> show status like 'Com%'; 该命令可以查询 sql 命令的执行次数. 2.定位执行效率较低的 ...

  6. java循环语句 总结笔记

    1.for 循环语句 语法:for(initialization;condition;iteration) public class A { public static void main(Strin ...

  7. IDEA 代码量统计(Statistic)

    IDEA 代码量统计(Statistic) 1.1 前言 项目到了一定阶段,都会想要看看项目的代码量情况,这里主要使用插件Statistic进行代码统计查看. 1.2 安装插件步骤 找到插件市场入口并 ...

  8. JS事件流、DOM事件流、IE事件处理、跨浏览器事件处理、事件对象与类型

    事件的移除 removeEventListener() 第二个参数需要指定要移除的事件句柄,不能是匿名函数,因为无法识别 想要移除成功,那么三个参数必须跟addEventListener中的三个完全一 ...

  9. win2012 挂载硬盘即增加新硬盘方法

    这篇文章主要介绍了win2012 挂载硬盘即增加新硬盘方法,需要的朋友可以参考下 点击左下角的服务器管理图标 点击右上角的“工具”,再选择“计算机管理” 再点击“磁盘管理” 在磁盘1的按钮处单击右键, ...

  10. 在阿里云服务器上安装mysql及重置密码

    参考链接:https://www.cnblogs.com/ljysy/p/10324854.html 下载与安装MySQL: 这里采用Yum管理好了各种rpm包的依赖,能够从指定的服务器自动下载RPM ...