#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__())
来源:https://www.cnblogs.com/648071634com/p/11656375.html