首页 > 编程语言 >python 迭代器

python 迭代器

时间:2022-11-03 20:16:46浏览次数:39  
标签:__ .__ 迭代 python iter next 对象

# 迭代: 当前执行依赖于上一次执行结果,


可迭代对象
  内置了__iter__()方法的,就是可迭代对象
  基本数据类型中,属于可迭代对象的有:字典、列表、元组、集合、字符串、文件对象。
迭代器对象:#打印类型是iterator
  可迭代对象调用__iter__()方法,返回值就是迭代器对象。
  迭代器对象调用__iter__()方法,返回依然是自己
  迭代器对象.__iter__().__iter__().__iter__() 等价与 迭代器对象.__iter__()
  (很重要,文件对象可以实现for循环的原理就是这个。)
迭代器对象的特点
  迭代器对象有两个方法: __iter__()方法和 __next__()方法。
  迭代器是一种节省空间的数据类型,可以被for循环,但是不会占用太大的内存空间。举例 range(10)
  迭代器不依赖于索引取值。。
  既是可迭代对象又是迭代器对象的, 就是文件类型。
迭代器取值:
  (1)迭代器调用__next__()方法,依赖于前边的执行次数,每次会获得一个值。如果取完了,就会报错。
  内置方法的简写:对象.__方法名__(),可以简写为 方法名(对象), 很多方法都可以,但不是全部,
  ‘abc’.__iter__()方法 等价与 iter('abc')
  'abc'.__iter__().__next__() 等价与 next('abc'.__iter__())
for循环内部原理:
  以列表为例:
  ll =[1,2,3,4]
  try:
    llIter = ll.__iter__()
    while True:
      llIter.__next__()
  except Exception():
    pass

for i in ll 这句话就是先对ll调用__iter__(), 从可迭代对象变成迭代器对象,然后使用while True循环调用__next__()方法,直到程序异常报错,
文件类型既是可迭代对象也是迭代器对象,底层调用__iter__()方法,返回的依然是自己。因此文件类型是支持for循环的。

标签:__,.__,迭代,python,iter,next,对象
From: https://www.cnblogs.com/lhg37927/p/16855667.html

相关文章

  • python描述 LeetCode 1486. 数组异或操作
    python描述LeetCode1486.数组异或操作  大家好,我是亓官劼(qíguānjié),在【亓官劼】公众号、GitHub、B站、华为开发者论坛等平台分享一些技术博文,主要包括前端开发、......
  • Python获取当前运行函数的名称、类方法名称
    获取函数的名称在函数外部获取函数的名称,可以使用.__name__来获取。deftest_func_name1(): print('test')func_name1=test_func_name1.__name__print(func_name1......
  • 用Docker搭建Python环境
    步骤1创建项目目录$cd/PATH/TO$mkdirpython-demo2下载python镜像1#下载镜像2dockerpullpython:3.834#查看镜像5dockerimages3创建pytho......
  • Python第九章实例
    01       02    03    04   ......
  • 超级炫酷的3D旋转动态图——Python代码实现
    ......
  • Python第十章实验报告
    一、实验题目Python第十章实例和实战作业二、实验目的和要求1.熟悉Pycharm的运行环境2.学习并掌握Python文件及目录操作三、主要仪器设备联想小新air15硬件:AMDR75......
  • Python基础指面向对象:2、动静态方法
    面向对象一、动静态方法在类中定义的函数有多种特性1、直接在类中定义函数​ 再类中直接定义函数,默认绑定给对象,类调用时有几个参数就要传几个参数,对象调用时该函数......
  • Python基础之面向对象:3、继承与派生
    面向对象一、三大特征之继承python三大特征:封装、继承、多态三者中继承最为核心,实际应用对,感受较为直观封装和多态略微抽象1、继承的概念继承的含义:​......
  • 计算机二级python备考刷题知识点总结(二)
    1、center()语法:str.center(width,fillchar)注:fillchar必须要用引号引起了center()返回一个原字符串居中,并使用填充字符填充到长度为width的新字符串,默认填充字符为空格......
  • Python中使用pyserial实现串口通信
    简介pyserial是基于Python实现的,用于操作串口的第三方库,它支持Windows、Linux、OSX、BSD等多个平台。本文主要讲解在Windows环境下使用pyserial来实现串口通信的基本方......