#获取一个对象的所有方法:dir()
s = 'ewcewc'
li = [1,2,3]
print(dir(s))
print(dir(li))
print('__iter__' in dir(s)) #潘多是不是可迭代对象,内部含有__iter__方法,就是可迭代对象
#内部含有__iter__且含有__next__的对象就是迭代器
with open('文件1', encoding='utf-8',mode='w') as f:
print(('__iter__' in dir(f)) and ('__next__' in dir(f)))
#可迭代对象可以转化为迭代器
s = 'jvbhd'
obj = iter(s) #或者s.__iter__()
print(obj)
print(next(obj)) #或者print(obj.__next__())
print(next(obj))
#迭代器取值用next取值,每次取值都会记住位置,不走回头路
li = [1,2,3,4,5,6,7]
obj = iter(li)
print(next(obj))
print(next(obj))
print(next(obj))
print(next(obj))
print(next(obj))
#利用while循环模拟for循环对可迭代对象进行取值的机制
li = [1,2,3,4,5,6,7]
obj = iter(li)
while 1:
try:
print(next(obj))
except Exception:
break