生成器

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

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

  • 作用:节省空间

  • 生成器可以使用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. .net core 部署到IIS 后出现 w3wp.exe 【】发生了未经处理的win32异常……

    抗疫时期,想到弄个微信程序用于社区出入和复工复产人员流动登记,老早就买的盛派的书和视频,一直没时间看,趁这个需求,下载盛派weixinDSK开始学习,先是打开盛派的网站陆续无法打开, 帮助文档也没能抢 ...

  2. 斯坦福大学cs231n作业参考(中文版)

    cs231n2016冬季课程作业完成,在原先的基础上进行了翻译和中文注释,同时增加了16之后版本的部分新作业文件,已经全部跑通,需要的欢迎自取. 斯坦福大学的 CS231n(全称:面向视觉识别的卷积神 ...

  3. eclipse中一个项目引用另一个项目的方法

    我们在开发的时候,有时候需要把一个大的项目打散,尤其是现在微服务的架构很流行,一个大的项目往往被拆成很多小的项目,而有的项目作为公共工程被独立出来,比如有个工程专门提供各种Util工具类,有的工程专门 ...

  4. PHP将图片base64编码传输

    PHP函数源码 function imgToBase64($img_file) { $img_base64 = ''; if (file_exists($img_file)) { $app_img_f ...

  5. 将Markdown编辑器搬进您的博客-让我们更优雅的书写文章

    各位小伙伴们,冷月今天给大家发一波福利.我们都知道markdown编辑器非常的好用,是我们写作的好帮手.这样的一款好用的文章编辑器,我们怎么才能让自己的博客也支持呢,冷月今天来教大家如何将Markdo ...

  6. pycharm的这些配置,你都知道吗

    前言 对于一枚pycharm工具的使用新手,正确了解这门工具的配置,在使用过程中遇到的很多问题也可以迎刃而解哦!! 文章篇幅有限,本篇文章提供以下配置手段: 1.字体大小调整 2.显示你需要的工具窗口 ...

  7. windows系统中如何删除文件路径过长的文件

    Q:通常在使用npm安装包后,路径会变的非常的长,有时候无法手动删除文件: 这个时候可以选中文件点击>添加文件到压缩文件,在弹出出来的框中勾选 压缩后删除原文件,>最后删除压缩包

  8. Java 【Math】

    一.Math类的使用方法 public class demo{ public static void main(String[] args){ double pi = Math.PI; //Math函 ...

  9. .Net Core程序最终只产生1个exe

    1.用VS新建一个.Net Core 命令行程序,程序里面写什么都行,我的是这样的 2.打开程序包控制台,或者使用PowerShell等可以执行dotnet命令的工具,把你的.Net 程序发布(编译) ...

  10. .net core 3.0+unit of work (一)

    1.先将unit of work源码下载 2.引入自己的项目 3.根据原始项目示意在自己项目的startup里注册仓储 由于我不想对每个实体都注册一遍,我使用了泛型仓储(core 2.0好像不支持) ...