#int
#str
#tuple
#list
#dict
#bool
#set
# print(dir(int))#告诉我所拥有的方法
# print([1].__add__([2]))
# print(dir(""))
# print(dir(()))
# print(dir([]))
# print(dir(bool))
# print(dir(range(10)))#只要可以for循环就可以迭代
# print(dir([].__iter__()))#一个列表执行了__iter__返回值就是一个迭代器
# print(set(dir([].__iter__()))-set(dir([])))
# # print([1,2,3].__iter__().__length_hint__())#元素个数
# list=[1,2,3]
# Iter=list.__iter__()
# print(Iter.__iter__().__next__())#迭代器--》通过__next__在迭代器中一个一个取值
# print(Iter.__iter__().__next__())#只要是含有—__iter__方法的都是可迭代的
# #只要含有__iter__就是可迭代的-------可迭代协议
# #可迭代协议:只要含有__next__和_iter__方法的就是迭代器
# print("__iter__"in dir([]).__iter__())
# # print("__next__"in dir([].__iter__())
# from collections import Iterator
# from collections import Iterable
# print(isinstance([],Iterator))
# print(isinstance([],Iterable))
# #如果是迭代器一定可迭代
#可迭代的不一定是迭代器
#可迭代的__iter__方法就可以得到一个迭代器
#for驯化怒就是在用迭代器
#只有是可迭代对象的时候才能使用for循环
# #当我们遇到一个不确定他能不能使用for循环,我们就可以判断他有没有迭代器
# L=[]
# for i in L:
# pass
# #Itertor=l.__iter__()
#Itertor.__next__()
#可以一个一个取值把每个值都取到
#节省内存空间
#迭代器不会在内存中占用一大块内存,而是需要一个给一个,每次next给一个
l=[1,2,3,4]
Iterator=l.__iter__()
while 1:
print(Iterator.__next__())