python迭代器

可迭代对象

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方法会生成一个迭代器对象 # 结果如下

image

迭代器对象

1.迭代器对象
	是由可迭代对象调用__iter__方法产生的
	迭代器对象判断的本质是看是否内置有__iter__和__next__
2.迭代器对象的作用
	提供了一种不依赖于索引取值的方式
 	正因为有迭代器的存在 我们的字典 集合才能够被for循环
3.迭代器对象实操
	 s1 = 'hello'  # 可迭代对象
    res = s1.__iter__()  # 迭代器对象
    print(res.__next__())  # 迭代取值 for循环的本质
	 一旦__next__取不到值 会直接报错
4.注意事项
	可迭代对象调用__iter__会成为迭代器对象 迭代器对象如果还调用__iter__不会有任何变化 还是迭代器对象本身

可迭代对象和迭代器对象

  1. (可迭代对象) 通过(__iter__方法) 变身成 (迭代器对象)

image

  1. 迭代器对象调用__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循环会自动捕获并处理
"""

异常捕获

异常捕获就类似于诸葛亮神机妙算。程序员在程序运行之前已经知道了程序哪里可能会有问题,于是就提前做一些预防措施。
附上丞相美图:
image

1.异常
	异常就是代码运行报错 行业俗语叫bug
	代码运行中一旦遇到异常会直接结束整个程序的运行 我们在编写代码的过程中药尽可能避免
2.异常分类
	语法错误
    	不允许出现 一旦出现立刻改正 
	逻辑错误
    	允许出现的 因为它一眼发现不了 代码运行之后才可能会出现
3.异常结构
	错误位置
 	错误类型

如何看pycharm报错

def func(): # 调用次数过多报错
    func()

func() 
# 点击红色箭头指向的蓝色路径 可以跳转到错误的位置 
# 红色框内是python解释器为你提供的 报错原因
# 上面这么多蓝色路径 是由于你代码引发的python解释器内部的一些错误

image

posted @ 2022-10-14 17:38  passion2021  阅读(63)  评论(0编辑  收藏  举报