首页 > 其他分享 >迭代对象与迭代器对象,for本质 异常捕捉

迭代对象与迭代器对象,for本质 异常捕捉

时间:2022-10-14 19:13:44浏览次数:49  
标签:__ 迭代 对象 iter next 报错 捕捉

可迭代对象

可迭代对象 
对象内置有双下iter(__iter__)方法的都可以称为可迭代对象。 # 内置方法就是我们在.调出来的
可迭代对象范围
分为两种 一种是不可迭代对象,一种是可迭代对象
不可迭代对象: int float boll 函数对象
可迭代对象: str list dict tuple set 文件对象
可迭代可以理解称为for循环,只要可以for循环的对象,都是可迭代对象。  
迭代 更新换代的意思。

迭代器对象

迭代器对象含义:
迭代对象调用__iter__生成的结果就是迭代器对象,无论调用几次 结果都是迭代器对象
特征:
含有__iter__ 或 __next__都属于迭代器对象
理解:
对于一些有序文件如 列表,字符串,元组,我们可以使用索引取值的方式取出,而字典,集合这写没有索引位的我们没办法用索引取值,有了迭代器以后就可以给字典和集合取值了。注意是取键。
代码:
name =  'ikun天下无敌',  '练习时长两年半', '鸡你太美'
res = name.__iter__()  # name可迭代对象用iter方法变身成为迭代器对象
print(res.__next__())  # 利用next方法取值
双下next方法一次只能取一个值。可以多次调用取值,取完值如果还有调用那么直接报错

简写代码:
name =  'ikun天下无敌',  '练习时长两年半', '鸡你太美'

res = iter(name)  # 转换成迭代器对象
print(next(res))  # ikun天下无敌 
print(next(res))  # 练习时长两年半
print(next(res))  # 鸡你太美

for循环的本质

for循环的本质其实就是底层 走了迭代器方式
 for 变量名 in 可迭代对象:
    循环体代码
底层: 先将可迭代对象用__iter__方法转变成迭代器对象,依此将迭代器对象用__next__方法取值,直到__next__取不到值得时候,next会报错,namefor循环会自动捕获 根据 next的报错来 自动结束循环。

异常捕获/处理

当我们自己在写一段很长代码的时候,经常在运行的时候会报错,该报错可称为bug,代码运行中遇到报错就会终止整个代码的运行。代码报错有两种可能
1.语法错误  写字都写错了????
2.逻辑错误  在我们写代码时 有的时候很难找到逻辑错误,因为藏得很深,只有在执行代码时才会体现出来
 怎么来看异常呢?
    一段代码出现报错,pycharm会给我们返回一段红色的信息,此信息包含三个结构。
    1. 错误代码的位置
    2. 错误的类型
    3. 发生错误的详情
我们可以根据错误代码位置快速找到该代码修改, 根据类型 和 详情判断是什么问题导致的。
"""如果出现多行报错那么只用看最近一行,因为上面的可能都是该行错误引起的"""

image

标签:__,迭代,对象,iter,next,报错,捕捉
From: https://www.cnblogs.com/LiaJi/p/16792007.html

相关文章

  • 17、python函数篇 内置函数、迭代器对象、异常的捕获和处理
    目录一、重要内置函数1、zip()2、filter()3、sorted()二、常见内置函数1、abs()2、all、any()3、bin、oct、hex、int()4、bytes()5、callable()6、chr、ord()7、dir()8、d......
  • 重要内置函数,常见内置函数,可迭代对象,迭代器对象,for循环本质,异常捕获
    重要内置函数#zip#l1=[11,22,33,44,55]#l2=['jason','kevin','oscar','jerry','tony']#l3=[1,2,3,4,5]#res=zip(l1,l2,l3)#print(list(......
  • 可迭代对象、迭代器对象、异常捕获
    可迭代对象、迭代器对象、异常捕获可迭代对象可迭代对象都有一个特点,对象内置__iter__方法,可以通过dir(对象)查看,也可以通过pycharm,在变量名后点一下.查看有没有这个内置......
  • 实验2 类和对象(2)
    实验四Complex.hpp#pragmaonce#include<iostream>#include<cmath>usingnamespacestd;classComplex{public:Complex(){};Complex(doublea){......
  • 把已经释放的CR的对象包到现有CR中
    我之前写了合并两个没有释放的CR的博客:​​http://blog.sina.com.cn/s/blog_c0978c9b0102vgiy.html​​今天是想把已经释放的CR,包到一个新CR下,合并不能用,但是可以用下面的方......
  • python迭代器
    目录可迭代对象迭代器对象可迭代对象和迭代器对象for循环的本质异常捕获如何看pycharm报错可迭代对象1.定义 对象内置有__iter__方法的都称为可迭代对象 """ 1.内置方......
  • HU_CREATE_GOODS_MOVEMENT报错:对象清单抬头数据中的差异
    对于已经创建HU的物料,调用HU_CREATE_GOODS_MOVEMENT 创建凭证的时候遇到了下面的问题情景是这样:先对ct00工厂的数据进行了bapi调用commit后又对CT20工厂数据进行操作这个......
  • 面向对象
    面向对象:封装、继承、多态打球:面向过程:专注于打球的动作面向对象:有一个人的对象,人的对象中包含了一个打球的动作JAVA有类构成,类由成员属性和成员......
  • 常见内置函数及可迭代对象
    目录重要内置函数常见内置函数可迭代对象迭代器对象for循环的本质异常捕获/处理重要内置函数zipl1=[11,22,33,44,55]l2=['jason','kevin','oscar','jerry',......
  • 实验二 类与对象2
    4.实验任务4不使用C++标准库,自行设计并实现一个简化版复数类ComplexComplex.hpp1#include<iostream>2#include<math.h>3usingnamespacestd;45clas......