python中for原理



  • for循环是对容器进行迭代的过程,不是所有的对象都可迭代。可迭代对象需要实现__iter__方法,并返回一个迭代器,迭代器(iterator),迭代器只需实现__next__方法

    >>> x = [1,2,3]
    >>> its = x.__iter__() # x有此方法,说明列表是可迭代对象
    >>> its
    <list_iterator object at 0x100f32198>
    
    >>> its.__next__()  # its有此方法,说明its是迭代器
    1
    >>> its.__next__()
    2
    >>> its.__next__()
    3
    >>> its.__next__()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration
    

    for循环步骤

    1. 先判断对象是否为可迭代对象,不是的话直接报错,抛出TypeError异常,是的话调用__iter__方法,返回一个迭代器
    2. 不断地调用迭代器的__next__方法,每次按序返回迭代器中的一个值
    3. 迭代到最后,没有更多元素了,就会抛出StopIteration,这个异常python自己会处理,不会暴露给开发者

 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

Looks like your connection to Dian was lost, please wait while we try to reconnect.