【python可迭代对象】

可迭代对象

什么是迭代?
迭代就是更新换代,每一次的迭代都必需依赖上一次的结果。单纯的重复不是迭代

什么是可迭代对象?
内置有__iter__方法的都可以称之为是可迭代对象
属于可迭代对象的有
字符串、列表、字典、元组、集合、文件对象
可迭代对象其实就是为了后续迭代取值做准备
提供了不依赖于索引取值的方式

迭代器对象

什么是迭代器对象?
可迭代对象调用__iter__方法之后生成的结果就是迭代器对象
迭代器的特征:含有__iter__方法和__next__方法

for循环内部原理for循环底层原理

 for 变量名 in 可迭代对象:
     循环体代码
  1. 会将in后面的数据调用__iter__()变成迭代器对象
    为什么文件对象也可以for循环 因为本身就是迭代器对象 再次调用不变
  2. 针对产生的迭代器对象依次调用__next__()方法迭代取值
  3. 当值取完之后 会自动处理报错并退出循环

异常处理

什么是异常?
异常俗称bug,就是代码出错,代码出错程序就会停止执行。

异常信息的组成:
在这里插入图片描述

  1. line关键字所在的一行
    用于提示你代码哪一行出错了 点击前面的蓝色字体可以直接定位
    ‘’‘如果报错的信息很长 一般最后一个才是’’’

  2. NameError错误的类型
    代码的报错也可以分为很多类型

  3. name ‘name’ is not defined
    具体的报错原因(就是解决报错的答案)
    异常的分类:

  4. 语法异常:比如if语法 while语法

  5. 逻辑异常:
    异常的类型
    Python常见异常类型大概分为以下类:

    1.AssertionError:当assert断言条件为假的时候抛出的异常

    2.AttributeError:当访问的对象属性不存在的时候抛出的异常

    3.IndexError:超出对象索引的范围时抛出的异常

    4.KeyError:在字典中查找一个不存在的key抛出的异常

    5.NameError:访问一个不存在的变量时抛出的异常

    6.OSError:操作系统产生的异常

    7.SyntaxError:语法错误时会抛出此异常

    8.TypeError:类型错误,通常是不通类型之间的操作会出现此异常

    9.ZeroDivisionError:进行数学运算时除数为0时会出现此异常

异常处理:
捕捉异常可以使用try/except语句。

try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

如果你不想在异常发生时结束你的程序,只需在try里捕获它。

语法:

以下为简单的try…except…else的语法:

try:
<语句>        #运行别的代码
except <名字><语句>        #如果在try部份引发了'name'异常
except <名字><数据>:
<语句>        #如果引发了'name'异常,获得附加的数据
else:
<语句>        #如果没有异常发生

try-finally 语句
try-finally 语句无论是否发生异常都将执行最后的代码。

try:
<语句>
finally:
<语句>    #退出try时总会执行
raise

for循环的本质

即先将遍历的对象用iter方法做成迭代器,再循环调用next方法拿到迭代器里参数的值,直到python捕捉到了StopIteration异常,这时终止循环,也就是for循环结束

# 利用while与异常捕获 实现for循环的功能
info = {'name': 'jason', 'age': 18, 'pwd': 123}
# 1.先转换成迭代器对象
# res  = info.__iter__()
res = iter(info)
# 2.迭代取值
while True:
    # print(res.__next__())
    try:
        print(next(res))
    except StopIteration as e:
        # 结束while循环
        break

迭代取值和索引取值的对比

1.索引取值
优势:可以反复获取相同的元素 并且没有固定的方向
劣势:只能支持有序的容器类型 无序的无法取值兼容性没有迭代取值高

2.迭代取值
优势:兼容所有的容器类型
劣势:取值的顺序永远都是从左往右 并且无法重复获取 去完就完了

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值