注册 登录
Python设计模式

第一章: 设计模式基础

第二章: 常用设计模式

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

2.7节: 迭代器模式

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

编辑 收藏

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

薯条老师的线下Python小班办得很好,学员的平均就业薪资有11K。线下小班培训的课程有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小班培训的学员大部分都找到了很好的工作,平均月薪有11K,学得好的同学,拿到的会更高。由于是小班教学,所以薯条老师有精力把每位学员都教好。打算参加线下小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

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

扫码免费领取学习资料:



欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录