zoukankan      html  css  js  c++  java
  • 函数05

    迭代器

      iterator

      迭代器就是迭代的工具

      迭代是一个重复的过程,每一次重复即一次迭代,并且每一次迭代的结果都是下一次迭代的初始值

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

      可迭代对象

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

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

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

      

      迭代器的使用

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

      调用迭代器的__next__()方法来获取每一个值

      如何判断一个对象是不是迭代器

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

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

      迭代器总结

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

      只要具备__iter__()方法的对象才能被迭代器取值,称之为可迭代对象

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

      python中迭代器同时具备iter方法和next方法,调用iter将安徽迭代器自身

      每一种数据类型内部的迭代实现都各不相同

    生成器

      generator

      生成数据的工具

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

      生成器的目的就是可以多次生成数据

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

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

      

      yield关键字

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

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

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

      yield与return的区别

      都返回一个值

      return只返回一次就结束,而yield可以多次返回,并且返回后将函数暂停

      

      生成器就是迭代器

      生产器同时具备iter和next函数,足以证明其就是一个迭代器,所以可以直接使用for来遍历

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

      迭代器,生成器,for之间的关系

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

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

      了解知识点:yield的特殊用法

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

      闭包函数可以传值但只能传一次

      想要多次传值就需要send方法

      使用send方法时需要注意必须进行了初始化,也就是先调用了一次next方法

    面向过程编程

      是一种编程思想,同样的在编程界不只有这一种编程思想还有很多

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

      面向过程的核心是过程二字,过程指的是解决问题的步骤

      基于面向过程设计编程就好比在设计一条流水线,是一种机械式的思维方式

      优点:复杂的问题流程化,进而简单化

      缺点:扩展性差,修改流水线的任意阶段,都会牵一发而动全身

      应用:扩展性要求不高的环境,典型案例linux内核

      

      

      

  • 相关阅读:
    jquery toggle(listenerOdd, listenerEven)
    struts quick start
    hdu 1518 Square (dfs)
    hdu 2544 最短路 (最短路径)
    hdu 1754 I Hate It (线段树)
    hdu 1856 More is better (并查集)
    hdu 1358 Period (KMP)
    hdu 2616 Kill the monster (DFS)
    hdu 2579 Dating with girls(2) (bfs)
    zoj 2110 Tempter of the Bone (dfs)
  • 原文地址:https://www.cnblogs.com/LinChengcheng/p/10277259.html
Copyright © 2011-2022 走看看