最常用的情况下,我理解,比如

for i in range(1, 5):

print i

回复内容:

关键词:迭代器

简单来说,for in 语句是一个语法糖,具体是这样的:

调用一个对象的 __iter__ 方法,方法会返回一个迭代器,所谓迭代器就是实现了 __next__ 方法的对象,如果一个对象本身就实现了 __next__(Python 2 中是直接 “next” 方法,没有下划线) ,可以直接返回自身。

调用迭代器的 __next__ 返回迭代器中的“下一个”元素,比如说第一次调用会返回 0,第二次会返回 1,如此这般。

最后没有元素了,迭代器抛出一个异常来表明自己没有元素了。for 语句会捕获这个异常并停下来。我建议你独立写一个斐波那契的迭代器。

Mac 怎么让截图变正常大小啊 QAQ

另外,还有一个销魂的东西叫做生成器,演示一下如何优雅地斐波那契:

(此后的代码为了简洁我都用 Python 3 来写,用 Python 2 能运行但是性能糟糕。)

def fib(n):

a = 0

b = 1

for _ in range(n):

a, b = b, a+b

yield a

谢邀。刚看到问题以为楼主要问in是什么意思。

这个for实际上就是迭代,使用的是迭代器(Iterator)。

# 以下代码在Python 2中运行

for row in f:

print row

# 完全等价于

itr = f.__iter__() # 获得新的迭代器

while True:

try:

row = itr.next()

except StopIteration:

break

print row

迭代器。

用dis转成虚拟机的指令

发现就是GET_ITER, FOR_ITER之类

这都是把range(1:5)和f当成容器来看。文件f既然有行,那row自然是字符串了。

就个人理解:

in关键字实现了一套python中的遍历协议.

协议A: __iter__ + next循环时, 程序先使用__iter__ (相当于iter(instance))获取具有next方法的对象, 然后通过其返回的对象, 不断调用其next方法, 直到StopIteration错误抛出.

class A:

def __iter__(self):

self.limit = 4

self.times = 0

self.init = 1

return self

def next(self):

if self.times >= self.limit:

raise StopIteration()

else:

x = self.init

self.times += 1

self.init += 1

return x

print 'A>>>>>>'

for x in A():

print x

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

相关文章

相关视频

网友评论

文明上网理性发言,请遵守 新闻评论服务协议我要评论

立即提交

专题推荐独孤九贱-php全栈开发教程

全栈 100W+

主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门

玉女心经-web前端开发教程

入门 50W+

主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门

天龙八部-实战开发教程

实战 80W+

主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习

for in在python中什么意思_Python for 循环中 in 关键字含义是什么?相关推荐

  1. python中x[:],x[:-1],x[:,]x[:,-1]等操作含义解析

    ** python中x[:],x[:-1],x[:,]x[:,-1]等操作含义解析 ** 一维数组操作: 例:x = [1, 2, 3, 4, 5, 6] 打印全部数组: x[:] 冒号左侧表示开始位 ...

  2. python中定义数据结构_Python中的数据结构—简介

    python中定义数据结构 You have multiples algorithms, the steps of which require fetching the smallest value ...

  3. python中列表常用方法_Python中列表的常用方法

    给列表添加元素 append方法 在列表最后追加元素 l1 = ['a', 'b', 'c', 'd', ] l1.append('e')print(l1)print(l1.append('e'))# ...

  4. python中pop函数_Python中的Pop函数

    python中pop函数 什么是弹出功能? (What is the pop function?) The method pop() removes and returns the last elem ...

  5. python中mod运算符_Python中的数学运算操作符使用进阶

    Python中对象的行为是由它的类型 (Type) 决定的.所谓类型就是支持某些特定的操作.数字对象在任何编程语言中都是基础元素,支持加.减.乘.除等数学操作. Python的数字对象有整数和浮点数, ...

  6. python中while嵌套循环_python中的while循环

    循环 目标 程序的三大流程  while 循环基本使用  break 和 continue  while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 -- 从上向下,顺 ...

  7. python中module用法_Python学习之module用法

    Python学习之module用法 Python学习之module用法 为什么80%的码农都做不了架构师?>>> Python has a way to put definition ...

  8. elif在python中啥意思_python中elif 结构语句怎么判断?

    if语句最基本的知识,相信小伙伴们已经学会了.有的小伙伴想挑战更高阶的使用,小编就考考大家,elif是什么呢?知道答案的小伙伴又会使用elif吗?当然,在if的基础上扩展,elif肯定是稍微难一点的. ...

  9. python中实例方法分类_python方法的分类(实例方法、类方法、静态方法)

    方法和函数的区分 很多童鞋会比较疑惑,方法和函数有什么区别,都是通过def去定义的啊? 只需要记住一点,方法是用来描述一个目标的行为动作! 不论你是直接通过 类名.方法调用,还是通过由类生成的实例.方 ...

  10. python中sys用法_python中os和sys模块的区别与常用方法总结

    python 的 python中os和sys模块的区别与常用方法总结 前言 本文主要介绍了关于python中os和sys模块区别与常用方法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看 ...

最新文章

  1. 一文尽览5G全产业链及新机遇
  2. 推荐10款纯css3实现的实用按钮
  3. 命令行运行vbs脚本并传参数给vbs中的变量简单示例
  4. python globle用法
  5. 心电图 python_能测血压,还有心电图,兼顾9大运动模式,dido手环还不错
  6. 计算机主板详细维修,教你电脑主板维修必备基础知识
  7. [贪心][区间dp]Zero-One Codeforces1733D1D2
  8. LMS自适应滤波的MATLAB实现——实例仿真
  9. cobar_note
  10. 徐思201771010132 《面向对象程序设计(java)》课程学习总结
  11. oracle11g oem使用手册,Oracle11g从入门到精通pdf
  12. 提到单片机很多人都很觉得不陌生,大街小巷上面电子产品都用到
  13. java通过LocalDateTime获取上周几
  14. php 读取docx,PHP怎么获取docx里面内容
  15. 计算机专业是不是天坑专业,工科中的三大“天坑”专业,就业前景不太乐观,入坑需谨慎!...
  16. flea-cache使用之Redis集群模式接入
  17. 【JAVA】关于自动化测试所需要学习的java基础知识笔记
  18. 嵌入式linux系统应用开发
  19. 自定义实现微信通讯录效果View
  20. arcgis制作瓦片地图_一种GIS瓦片地图的存储方式的制作方法

热门文章

  1. Axure8超详细使用教程(含安装包)
  2. sql中如何按拼音笔画排序
  3. 层叠上下文(stacking context)
  4. linux挂载VMFS硬盘,挂载ESXi服务器VMFS存储卷
  5. Eclipse没有Dynamic Web Project选项解决
  6. 论码流、码率、采样率、比特率、帧速率、分辨率、高清视频的概念
  7. LoRa和NB-IoT会长期共存吗?
  8. JSHOP2学习1:环境配置(超详细教程)
  9. dataset中shuffle()、repeat()、batch()用法
  10. 【错误记录】Kotlin 报错 ( Some kotlin libraries attached to this project were compiled with a newer kotlin )