Iterator/ Iterable

# ---------------------可迭代对象都可转为迭代器,且用next方法调用------------------------
# 可以 用作for循环的类型有 list dict set str generator, 这些都是可迭代对象
# 使用 isinstance()可以判断 对象是否为 literable

from collections import Iterable #导入可迭代对象的方法
from collections import Iterator #导入迭代器的方法
a={'name':'Ethan','age':'33'}
print(isinstance([],Iterable))
print(isinstance({},Iterable))
print(isinstance((),Iterable))
b='hello','bibi'
print(isinstance(b,Iterable))  

#-----------------------------------------————————————————————————

#可以被 next() 函数调用并不断返回下一个的对象 称为迭代器:Iterator
#next方法就叫迭代器,没有next方法就不叫迭代器。所以生成器一定是迭代器,而迭代器不一定是生成器。

#___________________________________________________________________

#例如列表不是一个迭代器
a=[1,2,3,4]
print(dir(a)) #dir()可以看所有调用的方法
print(isinstance(a,Iterator))  #可以看出a不是一个迭代器

#————————————————可以通过iter()函数将可迭代的对象都变为迭代器————————————————————————
b=iter([1,2,3,4])
print(isinstance(b,Iterator)) #true
print(next(b)) #返回1
print(next(b)) #放回2

#------------------for循环的本质-------------------------------
range(10)
a=range(10)
print(isinstance(a,Iterator))
#------------------文件读取一行一行的本质就是迭代器------------------
for line in f.readlines() #意味着每一行都有一个yield
Ethan Zhao