zoukankan      html  css  js  c++  java
  • Python for循环本质

    我们先来看一下for循环的一些简单应用:

    ls=[1,2,3]
    for i in ls:
        print(i)

    我们知道这样可以遍历地取出这里面的每一个元素,但是它的工作原理,我们都是模模糊糊的大概知道是那个样子。其实for循环的工作流程是基于迭代器协议的。为明白他的整个工作流程,我们不得不先看一下迭代器协议。

    迭代器协议

    1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退)
    
    2.迭代器:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法)
    
    3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象。
    
    注:可以通过__next__取值,就是迭代器

    我们接下来就看看,for循环的具体工作过程:

      for 循环在处理这些数据前,会调用 __iter__() 方法,将这些数据转化为一个迭代器,然后调用迭代器的 __next__() 方法,并捕获StopIteration异常,也就实现了遍历完所有数据就会结束,并不会抛出这个异常。

      我们可以用下面的代码来实现for循环的功能:

    x=[1,2,3]
    x_i=x.__iter__()
    try:
        while True:
            print(x_i.__next__())
    except StopIteration:
        pass

     

  • 相关阅读:
    Python之模块
    Python之request模块-基础用法
    Linux小知识点
    python之pip安装软件包常用命令
    windows设置多个JDK环境
    window配合虚拟机VMware搭建虚拟ubuntu服务器入坑集锦
    Linux服务器相关信息查询
    达梦数据库
    创业公司如何快速构建高效的监控系统?
    干货分享:智慧工厂时代下大数据 + 智能的深度实践
  • 原文地址:https://www.cnblogs.com/linshuhui/p/8986094.html
Copyright © 2011-2022 走看看