Python设计模式

第一章: 设计模式基础

第二章: 常用设计模式

首页 > Python设计模式 > 第二章: 常用设计模式 > 2.7节: 迭代器模式

2.7节: 迭代器模式

薯条老师 2021-10-05 16:57:20 360113 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

2.7.1 迭代器模式

迭代器模式使得用户可通过特定的接口来访问容器中的每一个元素,而不用了解其底层数据结构。在Python中遍历字符串,列表,元组等可迭代对象时,使用的就是迭代器。通过全局的iter方法可获取可迭代对象的迭代器。

2.7.2 迭代器协议

在Python中,一切皆对象,只要在类中定义了__iter__方法,那么该类型就是可迭代的。同时提供了魔术方法__next__,供程序员来实现具体的迭代逻辑。在通过__next__方法来定义具体的迭代逻辑时,需遵循Python中的迭代器协议。同学们在理解迭代器协议时只需掌握以下两点:

     ① 在__next__方法中返回下一项
     ② 若无法再获取下一项,则必须抛出StopIteration的异常

2.7.3 源码实现

# __author__ = 薯条老师,微信公众号:薯条编程
"""
Python中的迭代器协议。同学们在理解迭代器协议时只需掌握以下两点:
① 在__next__方法中返回下一项
② 若无法再获取下一项,则必须抛出StopIteration的异常
"""

class Book:

    def __init__(self, name):
        self.__name = name
        self.__authors = []
        self.__index = 0
        
    def add_author(self, author):
        self.__authors.append(author)
        
        
    def __iter__(self):
        return self
        
        
    def __next__(self):
        if self.__index >= len(self.__authors):
            self.__index = 0
            raise StopIteration
        author = self.__authors[self.__index]
        self.__index += 1
        return author
        
        
if __name__ == "__main__":
    book = Book("Java零基础入门权威指南")
    book.add_author("薯条老师")
    book.add_author("陈老师")
    # 遍历可迭代对象book
    for author_ in book:
        print(author_)
        
    for author_ in book:
        print(author_)

2.6.5 最具实力的小班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4)
Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取Python学习资料:



欢迎 发表评论: