迭代器协议 及 python中强大的for循环机制

一、什么是迭代器协议

迭代器协议:是指,对象必须提供一个__next__()方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代。(只能往后走,不能往前退)
协议:是一种约定。可迭代对象实现了迭代器协议,python的内部工具,如for循环、sum函数、min函数、max函数等都是遵循迭代器协议访问对象。
可迭代对象:实现了迭代器协议的对象。(如何实现?对象内部定义了一个__iter__()方法)

二、python中强大的for循环机制

1、for循环的本质是什么?

for循环的本质,其实就是遵循迭代器协议去访问对象。然后在for循环的时候去调用 可迭代对象 内部的__next__()方法。

那么,列表、元组、字符串、字典、集合、文件对象是不是可迭代对象呢?答案是:否。

他们只不过是在for循环时,调用了他们内部的__iter__()方法把他们变成了可迭代对象

然后for循环,再调用可迭代对象内部的__next__()方法去取值,而且for循环会捕捉StopIteration异常,以终止迭代。

# 举例:
# 定义一个列表
L = [1, 2, 3, 4, 5]
# 每次for循环一次就先把列表变为可迭代对象,然后去调用可迭代对象L里的next()方法一次,去循环取值
for i in L:   # for循环相当于 L.__iter__().__next__()
	print(i)

具体步骤解析如下:

(1)查看列表的内置方法:

#! /usr/bin/env python
# -*- coding: utf-8 -*-

L = [1, 2, 3, 4, 5]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值