欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Python for 循环中 in 关键字含义是什么?

程序员文章站 2022-06-04 14:33:53
...
最常用的情况下,我理解,比如

for i in range(1, 5):
    print i

回复内容:

关键词:迭代器

简单来说,for in 语句是一个语法糖,具体是这样的:
  • 调用一个对象的 __iter__ 方法,方法会返回一个迭代器,所谓迭代器就是实现了 __next__ 方法的对象,如果一个对象本身就实现了 __next__(Python 2 中是直接 “next” 方法,没有下划线) ,可以直接返回自身。
  • 调用迭代器的 __next__ 返回迭代器中的“下一个”元素,比如说第一次调用会返回 0,第二次会返回 1,如此这般。
  • 最后没有元素了,迭代器抛出一个异常来表明自己没有元素了。for 语句会捕获这个异常并停下来。
我建议你独立写一个斐波那契的迭代器。
Python for 循环中 in 关键字含义是什么?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
迭代器。

Python for 循环中 in 关键字含义是什么?
用dis转成虚拟机的指令
Python for 循环中 in 关键字含义是什么?发现就是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
Python for 循环中 in 关键字含义是什么?

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频


网友评论

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

我要评论
  • Python for 循环中 in 关键字含义是什么?
  • 专题推荐

    作者信息
    Python for 循环中 in 关键字含义是什么?

    认证0级讲师

    推荐视频教程
  • Python for 循环中 in 关键字含义是什么?javascript初级视频教程
  • Python for 循环中 in 关键字含义是什么?jquery 基础视频教程
  • 视频教程分类