美文网首页
for 循环内部原理

for 循环内部原理

作者: whenitsallover | 来源:发表于2018-03-09 00:19 被阅读0次

先上代码:

class Foo(object):

    def __init__(self,data):
        self.data = data

    def __iter__(self):
        return self

    def __next__(self):
        if self.data > 5:
            raise StopIteration
        self.data += 1
        return self.data

f = Foo(3)
for i in f:
    print(i)  # 4,5,6

上述代码也等同于

class Foo(object):
    def __init__(self,data):
        self.data = data

    def __next__(self):
        if self.data > 5:
            raise StopIteration
        self.data += 1
        return self.data
    
f = Foo(3)
for i in range(3):
    print(f.__next__())

分析:

1、在遍历Foo的实例对象时,执行for...in...时,首先会先执行iter()方法,将此对象变为迭代器。
2、iter方法返回了一个迭代器对象,而后调用next()方法进行循环。

结论:

之所以列表、字典、元组可以进行for循环,是因为类型内部定义了 iter
相当于以下代码:

obj = iter([11,22,33,44])
 
for i in obj:
    print i

相关文章

  • for 循环内部原理

    先上代码: 上述代码也等同于 分析: 1、在遍历Foo的实例对象时,执行for...in...时,首先会先执行it...

  • RunLoop 详解

    一、RunLoop简介 1、基本概念和原理   RunLoop 是通过内部维护的事件循环(Event Loop)来...

  • 06.foreach的概述和测试

    增强for 增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是...

  • 关于异步

    如何循环同步调接口 for+await map和foreach为什么不行?原理应该是foreach内部封装了whi...

  • RunLoop 理解

    1,RunLoop的作用? runloop 是一个对象处理事件和消息。内部的原理就是一个do while 等待循环...

  • iOS runloop 原理讲解和常见问题分析

    iOS runloop 原理讲解 runloop 是通过内部维护的事件循环来对事件消息进行管理的一个对象,runl...

  • 空间循环规律(一)

    所有天体的循环运行冥冥之中都有其内部的时空数理关系,于是我们可以从恒古的自然界及天体运行的圆循环规律、古老数学原理...

  • 可能碰到的iOS笔试面试题(15)--Runloop

    Runloop 什么是 Runloop? 从字面上讲就是运行循环。 它内部就是do-while循环,在这个循环内部...

  • 常见算法

    1. 组合数字 2. 冒泡排序 简介:最基础的排序 原理. 过程跟踪 内部:相邻元素两两比较 数次比较循环...

  • Block循环引用

    循环引用出现的原理:Block的拥有者在Block作用域内部又引用了自己,因此导致了Block的拥有者永远无法释放...

网友评论

      本文标题:for 循环内部原理

      本文链接:https://www.haomeiwen.com/subject/pxiufftx.html