"""
1.什么是迭代器
迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而继续的,单纯地重复并不是迭代
2.为何要有迭代器
为了解决基于索引迭代取值的局限性,Python必须提供一种能够不依赖于索引的取值方式,这就是迭代器
3.如何使用迭代器
"""
# 可迭代对象:内置有__iter__方法的都称之为可迭代的对象
# 字符串
# s1 = ''
# s1.__iter__()
# 列表
# l1 = []
# l1.__iter__()
# 元祖
# t1 = (1, )
# t1.__iter__()
# 字典
# d1 = {'a': 1}
# d1.__iter__()
# 集合
# set1 = {1, 2, 3}
# set1.__iter__()
# 文件
# with open('a.txt', mode='w') as f:
# f.__iter__()
# pass
# 调用可迭代对象下的__iter__方法会将其转换成迭代器对象
d = {'a': 1, 'b': 2, 'c': 3}
d_iterator = d.__iter__()
print(d_iterator) # <dict_keyiterator object at 0x0000022CB91E4EA0>
# while True:
# try:
# print(d_iterator.__next__())
# except StopIteration:
# break
# 在一个迭代器取完所有值之后,再对其取值取不到
# 需要取值则重新调用d.__iter__()
# for循环的工作原理:for循环可以成为迭代循环
# 1. d.__iter__()得到一个迭代器对象
# 2. 迭代器对象.__next__()拿到一个返回值,然后将返回值赋值给k
# 3. 循环步骤2,知道抛出StopIteration异常,for循环会捕捉异常后结束循环
for k in d:
print(k)