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

可迭代对象

可迭代对象 
对象内置有双下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

posted @ 2022-10-14 19:00  李阿鸡  阅读(34)  评论(0编辑  收藏  举报
Title