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

     

  • 相关阅读:
    IOTest-InputStream-OutputStream
    JSP
    java链表
    区块链
    MySQL常用命令
    jQuery
    javascript
    Nginx
    Linux
    Hive
  • 原文地址:https://www.cnblogs.com/linshuhui/p/8986094.html
Copyright © 2011-2022 走看看