目录
可迭代对象
1.定义
对象内置有__iter__方法的都称为可迭代对象
"""
1.内置方法 通过点的方式能够调用的方法
2.__iter__ 双下iter方法
"""
2.可迭代对象的范围
不是可迭代对象
int float bool 函数对象
是可迭代对象
str list dict tuple set 文件对象
3.可迭代的含义
"""
迭代:更新换代(每次更新都必须依赖上一次的结果)
eg:手机app更新
"""
可迭代在python中可以理解为是否支持for循环
print('miku'.__iter__())
print([1].__iter__())
print({1}.__iter__())
print((1,).__iter__())
print({1: 'miku'}.__iter__())
# 调用双下iter方法会生成一个迭代器对象 # 结果如下
迭代器对象
1.迭代器对象
是由可迭代对象调用__iter__方法产生的
迭代器对象判断的本质是看是否内置有__iter__和__next__
2.迭代器对象的作用
提供了一种不依赖于索引取值的方式
正因为有迭代器的存在 我们的字典 集合才能够被for循环
3.迭代器对象实操
s1 = 'hello' # 可迭代对象
res = s1.__iter__() # 迭代器对象
print(res.__next__()) # 迭代取值 for循环的本质
一旦__next__取不到值 会直接报错
4.注意事项
可迭代对象调用__iter__会成为迭代器对象 迭代器对象如果还调用__iter__不会有任何变化 还是迭代器对象本身
可迭代对象和迭代器对象
- (可迭代对象) 通过(__iter__方法) 变身成 (迭代器对象)
- 迭代器对象调用__next__
iter_obj = 'hello'.__iter__()
print(iter_obj.__next__()) # h
print(iter_obj.__next__()) # e
print(iter_obj.__next__()) # l
print(iter_obj.__next__()) # l
print(iter_obj.__next__()) # o
print(iter_obj.__next__()) # 报错
for循环的本质
for 变量名 in 可迭代对象:
循环体代码
"""
1.先将in后面的数据调用__iter__转变成迭代器对象
2.依次让迭代器对象调用__next__取值
3.一旦__next__取不到值报错 for循环会自动捕获并处理
"""
异常捕获
1.异常
异常就是代码运行报错 行业俗语叫bug
代码运行中一旦遇到异常会直接结束整个程序的运行 我们在编写代码的过程中药尽可能避免
2.异常分类
语法错误
不允许出现 一旦出现立刻改正
逻辑错误
允许出现的 因为它一眼发现不了 代码运行之后才可能会出现
3.异常结构
错误位置
错误类型
如何看pycharm报错
def func(): # 调用次数过多报错
func()
func()
# 点击红色箭头指向的蓝色路径 可以跳转到错误的位置
# 红色框内是python解释器为你提供的 报错原因
# 上面这么多蓝色路径 是由于你代码引发的python解释器内部的一些错误