我的编程空间,编程开发者的网络收藏夹
学习永远不晚

迭代器执行流程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

迭代器执行流程

迭代器的执行流程,以及说明可迭代对象不一定是迭代器,但迭代器一定是可迭代对象

 

实例1

from collections import Iterable, Iterator
import time


class Classmate(object):
    """可迭代的对象(必须存在__iter__)"""
    def __init__(self):
        self.names = list()

    def add(self, name):
        self.names.append(name)

    def __iter__(self):
        """
        如果想要一个对象称为一个可以迭代的对象,即可以使用for,那么必须实现__iter__方法
        如return引用的是一个迭代器,则返回迭代器里__next__的返回值
        """
        return ClassIterator(self)


class ClassIterator(object):
    """迭代器(必须同时存在__iter__和__next__)"""

    def __init__(self, obj):
        self.obj = obj
        self.current_num = 0

    def __iter__(self):
        pass

    def __next__(self):
        """for循环取出的name来自__next__的返回值"""

        if self.current_num < len(self.obj.names):
            ret = self.obj.names[self.current_num]
            self.current_num += 1
            return ret
        else:
            # 越界抛出异常退出
            raise StopIteration


classmate = Classmate()

classmate.add("熊")
classmate.add("猫")
classmate.add("狗")

# print("判断classmate是否是可以迭代的对象:", isinstance(classmate, Iterable))
# classmate_tierator = iter(classmate)
# print("判断classmate_tierator是否是迭代器:", isinstance(classmate_tierator, Iterator))
# print(next(classmate_tierator))

# 1.for循环会先判断 classmate是否是可迭代的对象,若成立执行下面步骤
# 2.for循环调用对象中的__iter__获取其返回值,如返回值是可迭代对象,执行下面步骤
# 3.for每循环一次,则会调用迭代器里的__next__,获取其返回值,如未设置退出条件,则不停返回None
for name in classmate:
    print(name)
    time.sleep(1)

 

 

实例1的优化

from collections import Iterable, Iterator
import time


class Classmate(object):
    """
    迭代器
    存在__iter__为可迭代对象
    同时存在__iter__和__next__为迭代器
    """
    def __init__(self):
        self.names = list()
        self.current_num = 0

    def add(self, name):
        self.names.append(name)

    def __iter__(self):
        """
        如果想要一个对象称为一个可以迭代的对象,即可以使用for,那么必须实现__iter__方法
        如return返回的是一个迭代器,则返回迭代器里__next__的返回值
        """
        return self

    def __next__(self):
        """for循环取出的name来自__next__的返回值"""

        if self.current_num < len(self.names):
            ret = self.names[self.current_num]
            self.current_num += 1
            return ret
        else:
            # 越界抛出异常退出
            raise StopIteration


classmate = Classmate()

classmate.add("熊")
classmate.add("猫")
classmate.add("狗")

# 1.for循环会先判断 classmate是否是可迭代的对象,若成立执行下面步骤
# 2.for循环调用对象中的__iter__获取其返回值,如返回值是可迭代对象,执行下面步骤
# 3.for每循环一次,则会调用迭代器里的__next__,获取其返回值,如未设置退出条件,则不停返回None
for name in classmate:
    print(name)
    time.sleep(1)

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

迭代器执行流程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

迭代器执行流程

迭代器的执行流程,以及说明可迭代对象不一定是迭代器,但迭代器一定是可迭代对象 实例1from collections import Iterable, Iteratorimport timeclass Classmate(object):
2023-01-30

Mysql 执行流程

1、逻辑剖析sql 执行流程为:sql语句 -> 查询缓存 -> 解析器 -> 优化器 -> 执行器。1.1 服务器处理客户端请求​客户端程序 connectors >> 连接池 >> SQL接口 >> 解析器 >> 优化器 >> 查询缓存 >> 插件式
Mysql 执行流程
2020-07-21

vue watch执行流程

Vue.js 是一个流行的前端框架,它提供了针对数据变化的处理机制。Vue 提供了一种 watch 的特性,可以用来监测 Vue 实例中数据的变化,并在发生变化时执行相应的操作。本文将介绍 Vue watch 的执行流程。1. 创建 Vue 实例首先,需要创建一个 Vue 实例。Vue 的数据响应机制是通过劫持对象的访问器函数来实现的。当访问一个 Vue 实例中的属性时,会触发
2023-05-24

laravel的执行流程实例代码分析

这篇文章主要讲解了“laravel的执行流程实例代码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“laravel的执行流程实例代码分析”吧!1.index.php$app = requi
2023-07-04

mysql 执行流程解析

Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核 心服务功能,以及所有的内置函数,所有跨存储引 擎的功能都在这一层实现,比如存储过程、触发器、视图等而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 Inn
mysql 执行流程解析
2021-01-18

springMVC执行流程详解

springMVC执行流程 一,springMVC执行流程 1,MVC架构的由来 主要由model层,view层和controller层组成。 1.1,jsp模型 主要是结构简单,开发这个小型项目的效率高,主要是由这个jsp和javaBea
2023-08-18

Java程序执行基本流程

下面由java学习教程栏目给大家介绍Java程序执行基本流程,希望对需要的朋友有所帮助!让我们来看看Java程序执行流程:例如hellojava.java文件,代码如下:  public class hellojava  {  public static vo
2014-11-27

Mysql 架构及执行流程

1. mysql 架构 1.1 简化版架构 客户端+ 核心服务 + 存储引擎 ⬇︎ ⬆︎(客户端)⬇︎⬆︎ =====【连接/线程处理】====} ⬇︎ ⬇︎ 【查询缓存】 ⬅︎ 【解析器】 } 【核
Mysql 架构及执行流程
2016-09-17

Mybatis SqlSession执行流程介绍

这篇文章主要讲解了“Mybatis SqlSession执行流程介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mybatis SqlSession执行流程介绍”吧!目录Mybatis执行
2023-06-20

mongodb执行流程是什么

MongoDB的执行流程主要包括以下几个步骤:1. 客户端发送命令:客户端向MongoDB发送命令,例如插入文档、查询数据等。2. 路由与分片处理:MongoDB根据集群配置进行路由和分片处理,确定数据存储在哪个分片上。3. 查询优化与执行
2023-09-06

MySQL架构与执行流程

前言:  MySQL数据库自己用了也有两三年了,基本上只是掌握增删改查的sql语句,从没有思考过MySQL的内部到底是怎么根据sql查询数据的,包括索引的原理,只知道加了索引查的就快,不知道为什么加上索引效率就会提升,包括索引的限制和优化也知之甚少,所以决定开
MySQL架构与执行流程
2020-05-27

Mysql Join语句执行流程

JOIN主要使用 Index Nested-Loop Join 和 Block Nested-Loop Join 算法实现Index Nested-Loop Join如果 join on 相关的字段存在索引就使用 Index Nested-Loop Joi
Mysql Join语句执行流程
2018-10-17

NodeJS远程代码执行

背景 @Artsploit在挖PayPal的漏洞时,发现一处NodeJS代码执行,奖励$10000美金。 测试var express = require('express'); var app = express(); app.get(
2022-06-04

Mysql 更新语句执行流程

与查询流程不一样的是,更新流程涉及两个重要的日志模块,redo log和 binlogredo log如果每一次的更新操作都需要写进磁盘,然后磁盘也 要找到对应的那条记录, 然后再更新,整个过程 IO 成本、查找成本都很高Mysql使用WAL机制来进行数据更新
Mysql 更新语句执行流程
2014-08-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录