day14 迭代器 生成器 面向过程编程

上节回顾

装饰器

    有参装饰器

    无参装饰器

    语法糖

    wraps装饰器

什么时候需要使用到装饰器:

    1.要增加新功能,但是不能修改源代码和调用方式

    2.实际开发时,用得最多的就是,将一段公共代码提取到装饰器(登录验证)

 

装饰器使用到的知识点:

闭包函数

函数对象

名称空间 作用域

语法糖

函数嵌套

 

01迭代器

什么是迭代器(iterator):

    器指的是某种工具

    迭代指的是更新换代的过程,例如应用程序的版本更新 从1.0变成了1.1

    迭代的目的是要根据上一个结果,产生下一个结果,这是一个重复的过程,但不是单纯的重复

 

    迭代器就是一种根据上一个结果得到下一个结果的工具,简单的说就是一种获取数据的工具

 

可迭代对象:

    指的就是可以使用迭代器取出数据的对象

    如何判断一个对象是否可迭代,就看这个对象是否提供迭代器,通过对象调用__iter__()来查看

    文件也是可迭代对象

 

    带有__开头__结尾的方式都是内置的特殊方式,会在某个时间自动执行

    

    所有的容器类型(包括字符串)都是可迭代的

 

    对于for而言 所有的对象都需要先判断是否是一个可迭代对象

 

迭代器总结:

    迭代器是一种通用的取值工具

    只要具备__iner__()方法的对象才能被迭代器,称之为可迭代兑现

    迭代器是为了取值,只要具备next方法的就是迭代器

    python中迭代器同时剧本iter方法和next方法的, 调用iter将返回迭代器

为什么用迭代器:

    统一方式

如何使用迭代器:

    1.通过调用对象的__iter__()方法得到迭代器

    2.通过迭代器的__next__()方式来获取每一个值

判断一个对象是不是迭代器:

    迭代是为了取值,取值使用next方法,那么只要对象具备next就称之为迭代器

    其中,文件类型比较特殊,它既是迭代器  又是可迭代对象

 

迭代器对象一个是一个可迭代对象

可迭代对象不一点是迭代器

 

02生成器

什么是生成器

    generator

    生成数据的工具

    生成是从无到有的过程   

    工具可以直接看成是函数,我们可以自己来定义一个函数来产生数据,但是每次执行函数都只能产生一次数据

    生成器的目的就是可以多次(不断的)生成数据

在python中生成器就是一个函数

    但是函数内部具备至少一个yield关键字

    反过来只要函数中出现了yieldname该函数就是一个生成器

关键字 yield

    一旦函数汇总出现了yield,调用函数是就不好立即执行函数体.并且会返回一个生成器对象

    当调用生成器的next方法时,会执行函数体,但是如果执行期间遇到了yield 函数就是暂停执行

    每一次调用next都是继续上一次yiled的位置继续往下执行,同时会将yield后的数据返回值调用者

 

yield 与returen的区别

    都能返回一个值

    不同之处在于:return值只要执行return函数就整体结束了

    而yield可以返回多次值 并且会在返回后将行暂停

生成器就是迭代器:

    生成器同时具备iter个nxet函数,足以证明其就是一个迭代器,所以可以直接使用for 老便利

    迭代器就是通过生成器显示的

 

   跌大气,生成器 for之间的关系 

    For的原理是使用迭代器取值

    迭代器是通过生成器实现的

 

了解知识点:

yield的特殊用法

    当你的生成器中需要外界数据参与时,生成器如何接受外界刺激?

    闭关和参数都能传数据到生成器中.但是只能接受一次值,如果要想多次传值就需要使用send函数了    

    send函数用于向生成器发送数据,但是要注意必须先进行初始化,也就是先调用一次__next__(方法)

 

总结

迭代器?

    for循环的实现原理

    内部就是在获取迭代器,不断的调用next帮你取值,取到没有值为止

    可迭代对象 就是拥有__iter__的对象

 

生成器

    为了不断的产生数据

    迭代器就是通过生成器实现的

    生成器的本质是一个函数 但是其中包好了yield关键字

 

03面向过程编程

    是一种编程思想,同样的在编程界不只有这一种编程思想,还有面向对象等

    编程思想没有高低之分,只有适合不适合

    你要思考的是什么样的应用程序应该采用哪种编程思想

    核心在于过程,指的是在编程时时刻想着过程

    过程指的是,第一步该干什么第二步干什么,完成这个任务需要哪些步骤以及每个步骤要干什么

 

面向过程编程思想的优点与缺点:

优点:可以将一个复杂的大问题,拆分为简单的小问题    (将复杂的问题简单化,流程化)

缺点: 牵一发需要动全身  扩展性极差,正因为如此 才有了新的变成思想 即面向对象

使用场景:对于一些对扩展性要求不高的应用程序,建议采用面向过程 例如系统内核 shell脚本程序

后期我们发开的应用程序是直接面向用户的,需求变化非常频繁,所以这个时候就需要使用面向对象了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值