• 技术文章 >Python技术 >Python基础教程

    Python之可迭代对象、迭代器、生成器

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-07-05 10:01:37原创2287

    Python可迭代对象(Iterable)

    Python中经常使用for来对某个对象进行遍历,此时被遍历的这个对象就是可迭代对象,像常见的list,tuple都是。如果给一个准确的定义的话,就是只要它定义了可以返回一个迭代器的__iter__方法,或者定义了可以支持下标索引的__getitem__方法,那么它就是一个可迭代对象。

    Python迭代器(iterator)

    迭代器是通过next()来实现的,每调用一次他就会返回下一个元素,当没有下一个元素的时候返回一个StopIteration异常,所以实际上定义了这个方法的都算是迭代器。可以用通过下面例子来体验一下迭代器:

    生成器(Generators)

    生成器是构造迭代器的最简单有力的工具,与普通函数不同的只有在返回一个值的时候使用yield来替代return,然后yield会自动构建好next()和iter()

    因为迭代器如此普遍,python专门为for关键字做了迭代器的语法糖。在for循环中,Python将自动调用工厂函数iter()获得迭代器,自动调用next()获取元素,还完成了检查StopIteration异常的工作。

    相关推荐:《Python视频教程

    定义迭代器

    下面一个例子——斐波那契数列

    # -*- coding: cp936 -*-
    class Fabs(object):
        def __init__(self,max):
            self.max = max
            self.n, self.a, self.b = 0, 0, 1  #特别指出:第0项是0,第1项是第一个1.整个数列从1开始
        def __iter__(self):
            return self
        def next(self):
            if self.n < self.max:
                r = self.b
                self.a, self.b = self.b, self.a + self.b
                self.n = self.n + 1
                return r
            raise StopIteration()
    
    print Fabs(5)
    for key in Fabs(5):
        print key

    结果

    <__main__.Fabs object at 0x01A63090>
    1
    1
    2
    3
    5
    专题推荐:python 可迭代对象 迭代器 生成器
    上一篇:Python MySQL callproc方法:调用数据库存储过程 下一篇:什么是线程(多线程),Python多线程的好处

    相关文章推荐

    • Python中的迭代器是什么• Python3 迭代器与生成器• Python中可迭代对象、迭代器详解

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网