day14
迭代器
什么是迭代器(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的更多相关文章
- day14<常见对象+>
常见对象(正则表达式的概述和简单使用) 常见对象(字符类演示) 常见对象(预定义字符类演示) 常见对象(数量词) 常见对象(正则表达式的分割功能) 常见对象(把给定字符串中的数字排序) 常见对象(正则 ...
- day12<常见对象+>
常见对象(Scanner的概述和方法介绍) 常见对象(Scanner获取数据出现的小问题及解决方案) 常见对象(String类的概述) 常见对象(String类的构造方法) 常见对象(String类的 ...
- 【JAVA零基础入门系列】Day14 Java对象的克隆
今天要介绍一个概念,对象的克隆.本篇有一定难度,请先做好心理准备.看不懂的话可以多看两遍,还是不懂的话,可以在下方留言,我会看情况进行修改和补充. 克隆,自然就是将对象重新复制一份,那为什么要用克隆呢 ...
- 阶段01Java基础day13常见对象02
13.01_常见对象(StringBuffer类的概述) A:StringBuffer类概述 通过JDK提供的API,查看StringBuffer类的说明 线程安全的可变字符序列 B:简述安全问题 线 ...
- day13<常见对象+>
常见对象(StringBuffer类的概述) 常见对象(StringBuffer类的构造方法) 常见对象(StringBuffer的添加功能) 常见对象(StringBuffer的删除功能) 常见对象 ...
- day11<Java开发工具&常见对象>
Java开发工具(常见开发工具介绍) Java开发工具(Eclipse中HelloWorld案例以及汉化) Java开发工具(Eclipse的视窗和视图概述) Java开发工具(Eclipse工作空间 ...
- JavaScript 入门之常见对象
常见对象 1. Object 对象 2. String 对象 3. Array 对象 4. Date 对象 5. Number 对象 6. 自定义对象 with 语句 为了简化对象调用内容的书写 格式 ...
- Java常见对象Object类中的个别方法
Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...
- VB - FSO的常见对象和方法
1. set fs=wscript.createobject(“scripting.filesystemobject”) 这样就建立了fso的模型.如果要释放的话也很简单, set fs=nothin ...
- 一文读懂Redis常见对象类型的底层数据结构
Redis是一个基于内存中的数据结构存储系统,可以用作数据库.缓存和消息中间件.Redis支持五种常见对象类型:字符串(String).哈希(Hash).列表(List).集合(Set)以及有序集合( ...
随机推荐
- Mac学习
碰到问题可以多查看帮助文件 快速上手 1,自动隐藏顶端菜单栏: 通用-> 外观 menu bar 2,docker 程序坞,左边为应用程序,右边是文件或者文件夹,38线 3,option -&g ...
- springcloud学习第一坑
我是根据周立先生所写的<Spring+Cloud与Docker微服务架构实战>来学习SpringCloud的,我会记录下来我日常遇到的所有问题,包括但不仅只包括SpringCloud的问题 ...
- springboot+spring security +oauth2.0 demo搭建(password模式)(认证授权端与资源服务端分离的形式)
项目security_simple(认证授权项目) 1.新建springboot项目 这儿选择springboot版本我选择的是2.0.6 点击finish后完成项目的创建 2.引入maven依赖 ...
- Cross-Origin跨域问题
为什么会跨域,要先了解浏览器的同源策略SOP(Same Orign Policy) https://segmentfault.com/a/1190000015597029 同源: 如果两个页面的协议 ...
- CentOS7、REHL7的firewalld防火墙使用简单说明
title: CentOS7.REHL7的firewalld防火墙使用简单说明 categories: Linux tags: - Linux timezone: Asia/Shanghai date ...
- 让我怀疑人生的bug集合
bug1:一个人人都知道全局变量易污染,但是我就是污染不了的问题 解决:刚开始动用了session来存这个值,后来觉得太小题大做了,最后使用了闭包来解决,第一个function结束后开启第二个,起初没 ...
- php----------const 定义的常量和define()定义的常量的区别?
用法一:const用于类成员变量,一经定义不可修改,define用于全局常量,不可用于类成员变量的定义,const可在类中使用也可以在类外面使用,define不能. 定义:const 常量名=值; 没 ...
- 005-CSS让页脚始终在底部不论页面内容多少
让页脚始终在页面底部,不论页面内容是多或者少页脚始终在页面底部. 方案一: <!DOCTYPE html> <html> <head> <meta chars ...
- [python 练习] 计算个税
题目:利用python计算个税 说明:python有序字典的使用 代码: # -*- coding: utf-8 -*- from collections import OrderedDict # 税 ...
- 2018-2019-2 网络对抗技术 20165305 Exp2 后门原理与实践
常用后门工具 一.Windows获得Linux Shell 在Windows下使用ipconfig查看本机IP 使用ncat.exe程序监听本机的5305端口 在Kali环境下,使用nc指令的-e选项 ...