迭代器
什么是迭代器(iterator)
器指的是某种工具
迭代指的是更新换代的过程,例如应用程序的版本更新从1.0 变成 1.2
迭代的目的是要根据上一个结果,产生下一个结果,这是一个重复的过程,但不是单纯的重复
迭代器就是,一种根据上一个结果得到下一个结果的工具,简单的说就是一种获取数据的工具 可迭代对象
指的就是可以使用迭代器取出数据的对象
如何判断一个对象是否可迭代,就看这个对象是否提供了迭代器,通过对象调用__iter__()来获取迭代器
所有的容器类型(包括字符串)都是可迭代的 迭代器的使用
1.通过调用对象的__iter__()方法得到迭代器
2.通过迭代器的__next__()方法来获取每一个值
如何判断一个对象是不是迭代器?
迭代是为了取值,取值使用next方法,那么只要对象具备next方法就称之为迭代器
其中文件类型比较特殊,它既是迭代器,又是可迭代对象 迭代器总结:
迭代器是一种通用的取值工具
只有具备__inter__()方法的对象才能被迭代器取值,称之为可迭代对象
迭代器是为了取值,只要具备next方法的就是迭代器
python中迭代器同时具备iter方法和next方法,调用iter将返回迭代器自身
每一种数据类型内部的迭代实现都各不相同 为什么使用迭代器
统一取值方法 如何使用迭代器
for。。
生成器
generator
名词解释:
生成数据的工具
生成是从无到有的过程
工具可以直接看成函数,我们可以自己定义一个函数来产生数据,但是每次执行函数都只能产生一次数据
生成器的目的就是可以多次不断的生成数据
在python中生成器就是一个函数
但是函数内部具备至少一个yield关键字
反过来只要函数中出现了yield那么该函数就是一个生成器
yield关键字
一旦函数中出现了yield,调用函数时就不会立即执行函数体,并且会返回一个生成器对象
当调用生成器的next方法时会执行函数体,但是如果执行期间遇到yield,函数就会暂停执行
每一次调用next,都是从上一次yield的位置继续往下执行,同时会将yield后的数据返回给调用者
yield与return的区别
都能返回一个值
不同之处在于:return只返回一次值,只要执行return函数就整体结束了
而yield可以返回多次值,并且会在返回后将函数暂停住 生成器就是迭代器
生成器同时具备iter和next函数,足以证明器就是一个迭代器,所以可以直接用for遍历
迭代器就是通过生成器实现的 迭代器,生成器,for之间的关系
for的原理是使用迭代器取值
迭代器是通过生成器实现的 了解知识点:
yield的特殊用法
当你的生成器中需要外界数据参与时,生成器中如何接受外界的数据
闭包和函数都能传数据到生成器中,但是都只能接受一次值,如果想要多次传值就需要send函数了
send函数用于向生成器发送数据,但是要注意必须先进行初始化,也就是先调用一次next(方法)
面向过程编程
是一种编程思想,同样的在编程界不只有这一种编程思想,还有面向对象编程等等。。
编程思想没有高低之分,只有适合于不适合
你要思考的是什么样的应用程序应该采用哪种编程思想 核心在于过程,指的是在编程时时刻刻想着过程
过程指的就是,第一步干什么第二部干什么,完成这个任务需要哪些步骤
以及每个步骤要干什么 面向过程编程思想的优缺点
优点:可以将一个复杂的大问题,拆分为简单的小问题,将复杂的问题简单化,流程化
缺点:牵一发需要动全身,扩展性极差,正因如此,才有了新的编程思想,即面向对象
使用场景:对于一些对扩展性要求不高的应用程序,建议采用面向过程,例如系统内核,shell脚本程序等等
后期我们开发的应用程序大多是直接面向用户的,需求变化非常频繁,所以这时候就需要使用面相对象了

day14的更多相关文章

  1. day14<常见对象+>

    常见对象(正则表达式的概述和简单使用) 常见对象(字符类演示) 常见对象(预定义字符类演示) 常见对象(数量词) 常见对象(正则表达式的分割功能) 常见对象(把给定字符串中的数字排序) 常见对象(正则 ...

  2. day12<常见对象+>

    常见对象(Scanner的概述和方法介绍) 常见对象(Scanner获取数据出现的小问题及解决方案) 常见对象(String类的概述) 常见对象(String类的构造方法) 常见对象(String类的 ...

  3. 【JAVA零基础入门系列】Day14 Java对象的克隆

    今天要介绍一个概念,对象的克隆.本篇有一定难度,请先做好心理准备.看不懂的话可以多看两遍,还是不懂的话,可以在下方留言,我会看情况进行修改和补充. 克隆,自然就是将对象重新复制一份,那为什么要用克隆呢 ...

  4. 阶段01Java基础day13常见对象02

    13.01_常见对象(StringBuffer类的概述) A:StringBuffer类概述 通过JDK提供的API,查看StringBuffer类的说明 线程安全的可变字符序列 B:简述安全问题 线 ...

  5. day13<常见对象+>

    常见对象(StringBuffer类的概述) 常见对象(StringBuffer类的构造方法) 常见对象(StringBuffer的添加功能) 常见对象(StringBuffer的删除功能) 常见对象 ...

  6. day11<Java开发工具&常见对象>

    Java开发工具(常见开发工具介绍) Java开发工具(Eclipse中HelloWorld案例以及汉化) Java开发工具(Eclipse的视窗和视图概述) Java开发工具(Eclipse工作空间 ...

  7. JavaScript 入门之常见对象

    常见对象 1. Object 对象 2. String 对象 3. Array 对象 4. Date 对象 5. Number 对象 6. 自定义对象 with 语句 为了简化对象调用内容的书写 格式 ...

  8. Java常见对象Object类中的个别方法

    Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...

  9. VB - FSO的常见对象和方法

    1. set fs=wscript.createobject(“scripting.filesystemobject”) 这样就建立了fso的模型.如果要释放的话也很简单, set fs=nothin ...

  10. 一文读懂Redis常见对象类型的底层数据结构

    Redis是一个基于内存中的数据结构存储系统,可以用作数据库.缓存和消息中间件.Redis支持五种常见对象类型:字符串(String).哈希(Hash).列表(List).集合(Set)以及有序集合( ...

随机推荐

  1. WebBrowser 打印

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="RTMInterViewInfo ...

  2. Appium自动化测试之Appium的安装与配置

    Appium自动化测试- Appium环境的安装与配置Appium中文文档: https://github.com/appium/appium/tree/master/docs/cn Appium的安 ...

  3. 学习懈怠的时候,可以运行Qt自带的Demo,或者Delphi控件自带的Demo,或者Cantu书带的源码,运行一下Boost的例子(搞C++不学习Boost/Poco/Folly绝对是一大损失,有需要使用库要第一时间想到)(在六大的痛苦经历说明,我的理论性确实不强,更适合做实践)

    这样学还不用动脑子,而且熟悉控件也需要时间,而且慢慢就找到感觉了,就可以精神抖擞的恢复斗志干活了.或者Cantu书带的源码. 并且可以使用Mac SSD运行Qt的Demo,这样运行速度快一点. 此外, ...

  4. Java代码实现封装多级树结构对象

    前言: 在开发中,我们经常见到,前端展示树状结构的,这时候就需要后端去封装一个多级树结构对象,前端根据这样结构的数据去渲染数据,这篇文章讲的是如何封装成多级树结构对象. 正文: 1.先封装个树结构的对 ...

  5. Linux 磁盘介绍(磁盘、分区、MBR、GPT)

    原文:https://www.linuxidc.com/Linux/2013-06/85717.htm 1. CHS(Cylinder-Head-Sector): was an early metho ...

  6. plsql导入.dmp, .sql步骤

    plsql导入.sql和.dmp文件时,会经常用到,对于初学者来说可能没有那么简单,毕竟oracle数据库比较麻烦. 下面是我自己导入.sql和.dmp文件的步骤. 1.导入.sql文件(sql文件是 ...

  7. (转)Pycharm在Ubuntu 16.04 系统中tensorflow导入报错

    今天下午在配置pycharm时一直出现tensorflow不能导入的错误,如下图所示: 通过以下步骤可以解决问题: 步骤一: 1)在pycharm安装目录下,进入bin目录(一般情况下我们下载解压py ...

  8. Oracle程序备份

    --使用root用户备份 su - root mkdir -p /oracle/data_dump/backup_soft nohup tar -cvf /oracle/data_dump/backu ...

  9. laravel----------carbon时间类的使用介绍

    echo Carbon::today();       // 对象 2018-04-17 00:00:00echo Carbon::tomorrow(); // 对象 2018-04-18 00:00 ...

  10. nginx如何调用php

    nginx如何调用php 采用nginx+php作为webserver的架构模式,在现如今运用相当广泛.然而第一步需要实现的是如何让nginx正确的调用php.由于nginx调用php并不是如同调用一 ...