首页 > 其他分享 >可迭代对象、迭代器对象、异常捕获

可迭代对象、迭代器对象、异常捕获

时间:2022-10-14 18:57:36浏览次数:59  
标签:__ 迭代 对象 捕获 iter next 异常

可迭代对象、迭代器对象、异常捕获

可迭代对象

可迭代对象都有一个特点,对象内置__iter__方法,可以通过dir(对象)查看,也可以通过pycharm,在变量名后点一下.查看有没有这个内置方法。

可迭代对象的分类

  • 不可迭代的对象

    int float bool 函数对象

  • 可迭代对象

    str list dict tuple set 文件对象

可迭代的含义

迭代,依赖上一次的结果,来更新下一次。

如以下一段代码:

count = 1
total = 0
while count < 10:  
    total += 1 # debug这段代码,每次循环中total都根据上一次更新
    count +=1
print(total)  # 45

迭代器对象

可迭代对象通过__iter__方法产生的对象叫做的迭代器对象。

迭代器对象拥有__iter__方法和__next__方法。

迭代器对象提供了一种不依赖索引取值的方式,就是依次的取出迭代值。

迭代器对象操作

s1 = 'hello'  # 可迭代对象
res = s1.__iter__()  # 通过iter产生迭代器对象
print(res.__next__())  # h  # next指迭代向后一个个取值
print(res.__next__())  # l  # 每执行一次next就向后迭代一次。

# 上述代码中,是可迭代对象的iter方法
# 而迭代器的iter方法是用来干什么的呢。
s1 = 'hello'  # 可迭代对象
res = s1.__iter__().__iter__()  # 通过iter产生迭代器对象,再次执行iter
print(res.__next__())  # h  # 依然可以通过next取值
# 迭代器通过__iter__还是迭代器
注意:一旦__next__取不到值了,就会报错

for 循环的本质

for 变量名 in 可迭代对象\迭代器对象:
	循环体代码
  • 对in后面的对象执行__iter__方法得到迭代器对象
  • while循环调用__next__取值,赋值给变量名
  • 取到最后,next取不出来的报错会被捕获,这个要涉及到下文的异常捕获

异常捕获

异常以及异常类型

异常就是代码运行报错,行业俗语叫bug。
代码运行中一旦遇到异常会直接结束整个程序的运行,我们在编写代码的过程中药尽可能避免。

代码报错有两种:

  • 语法错误

    语法错误是明眼人一眼能够看出来的,语法这是程序员的基础技能,不容有错

  • 逻辑错误

    一眼可能看不出来,需要经验积累能感知到可能有的逻辑错误。

    比方说,上文变量经过分支可能被赋值为一个字符串类型的数据,但是在后面执行了一个列表的内置方法报错了。

异常结构

  • 异常位置
  • 异常类型
  • 异常详情

image

标签:__,迭代,对象,捕获,iter,next,异常
From: https://www.cnblogs.com/Leethon-lizhilog/p/16792645.html

相关文章

  • 实验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......
  • 10月14日内容总结——内置函数、可迭代对象和迭代器、异常捕获与处理
    目录一、重要内置函数1、zip2、filter3、sorted二、常见内置函数(了解)1、abs2、all3、any4、bytes5、bin、oct、hex、int6、callable7、chr、ord8、dir9、divmod10、enumera......
  • js 数组对象中每一项对象属性比较大小与计算数组对象属性和
    //数组对象排序方法 exportfunctioncompare(property){   returnfunction(a,b){    constvalue1=a[property]    constvalue2......
  • asp.net core 使用转外部对象为Controller
    应用程序部件 MSDN说明:应用程序部件是对应用资源的抽象化,借助应用程序部件,ASP.NETCore可以发现控制器、视图组件、标记帮助程序、RazorPages、Razor编译源等。核......