我们先来看一下for循环的一些简单应用:

ls=[1,2,3]
for i in ls:print(i)

我们知道这样可以遍历地取出这里面的每一个元素,但是它的工作原理,我们都是模模糊糊的大概知道是那个样子。其实for循环的工作流程是基于迭代器协议的。为明白他的整个工作流程,我们不得不先看一下迭代器协议。

迭代器协议

1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退)

2.迭代器:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法)

3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象。

注:可以通过__next__取值,就是迭代器

我们接下来就看看,for循环的具体工作过程:

for 循环在处理这些数据前,会调用 __ iter__() 方法,将这些数据转化为一个迭代器,然后调用迭代器的 __ next__() 方法,并捕获StopIteration异常,也就实现了遍历完所有数据就会结束,并不会抛出这个异常。

我们可以用下面的代码来实现for循环的功能:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
x=[1,2,3]
x_i=x.__iter__()
try:while True:print(x_i.__next__())
except StopIteration:pass

Python for循环本质相关推荐

  1. python while循环例题_【学习笔记】python:5for循环与while循环(上)

    点击上方蓝字,关注我吧 课 程 表 for循环代发格式 for循环的3个要点即是:1.空房间:2.一群等着办业务的人:3.业务流程 空房间的学名叫[元素](item),你可以把它当成是一个变量.那么首 ...

  2. python无限循环条件循环_Python - 条件控制、循环语句 - 第十二天

    Python 条件控制.循环语句 end 关键字 关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符,实例如下: Python 条件语句是通过一条或多条语句的执行结果(True 或 ...

  3. Python编写循环的两个建议 | 鹅厂实战

    作者 | piglei(腾讯高级工程师) 转载自腾讯技术工程知乎专栏 循环是一种常用的程序控制结构.我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行.而" ...

  4. python for 循环中使用 remove 删除列表中的元素

    python for 循环中使用 remove 删除列表中的元素 错误的代码 # !/usr/bin/python # encoding: utf-8 # -*- coding: utf8 -*- o ...

  5. 独家 | 数据科学家的必备读物:从零开始用 Python 构建循环神经网络(附代码)...

    作者:Faizan Shaikh 翻译:李文婧 校对:张一豪 本文约4300字,建议阅读10+分钟. 本文带你快速浏览典型NN模型核心部分,并教你构建RNN解决相关问题. 引言 人类不会每听到一个句子 ...

  6. python哨兵循环_Python通用循环的构造方法实例分析

    本文实例讲述了python通用循环的构造方法.分享给大家供大家参考,具体如下: 1.交互循环 是无限循环的一种,允许用户通过交互的方式程序的特定部分: def main(): sum =0.0 cou ...

  7. python当型循环_对python while循环和双重循环的实例详解

    废话不多说,直接上代码吧! #python中,while语句用于循环执行程序,即在某个条件下,循环执行某段程序,以处理需要重复处理的相同任务. #while是"当型"循环结构. i ...

  8. python for循环删除

    python for循环遍历时,能动态删除元素吗?本文讲给你答案. 先来上个代码: # -*- coding:utf-8 -*- list = [1,2,3,4,5,6,7,8]# 使用for 删除某 ...

  9. python while循环语句-Python While 循环语句

    Python While 循环语句 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务.其基本形式为: while 判断条件(cond ...

最新文章

  1. Convert函数应用格式化日期
  2. [记录]-Cortex-A76仅EL0支持aarch32
  3. 【Java后台】Java执行Python代码的3类5种情况测试【Java源码+Python源码举例】
  4. MySQL批量update数据(更新的数据值不同)
  5. pycharm无法导入本地模块问题
  6. html织梦站内搜索代码,简单三步-实现dede站内搜索功能
  7. 正则表达式匹配指定的tr标签
  8. VMware网卡配置
  9. 【集群仿真】基于matlab固定翼无人机集群仿真演示平台【含Matlab源码 1497期】
  10. 【友元、异常和其他】——C++ Prime Plus CH15
  11. matlab 平滑曲线连接_科研画图-率失真曲线图改进:散点连接成曲线并画出原散点的标记点(基于Matlab)...
  12. 双系统windows+linux如何正确删除linux
  13. G2、D3 绘制维恩图
  14. APK文件如何查看源代码
  15. Firefox设置中文
  16. 【win10+cuda7.5+cudnn6.0安装caffe⑥】报错及处理方式
  17. 苹果手机如何分享wifi密码_wifi网速慢被蹭网?用手机一键修改wifi密码,不用求人...
  18. The Last Samurai 最后的武士**
  19. Nvidia驱动卸载干净了,新驱动却还是安装不上?
  20. 年老时最后悔但为时已晚的几件事

热门文章

  1. 大数据:从入门到XX(一)
  2. 集群系统与事务处理需要注意的一点
  3. vi/vim 光标移动命令
  4. 苹果欲借免费纳米SIM卡技术控制行业标准
  5. Word无法使用超链接,提示:“由于本机的限制...”
  6. 【学习笔记】ABAP OOD设计模式 - 桥接模式
  7. 【MM模块】 Info Record 采购信息记录
  8. PM——【1】维护功能位置主数据
  9. sap abap 对字符串的操作
  10. field module的on input和on request区别