今天是在老男孩学习的第13天,今天考试发现我的知识还差的很远,这次考试开始会单独整理考试错题与平时感觉难的题目。今日内容大致整理如下:
dir方法 打印出该类型的所有方法
print(dir([])) print(dir(())) print(dir({})) print(dir(int))
其中,带下划线的方法,例如__name__方法被称作双下方法,此类方法是由c编程,运行效率快。
其中,只要能使用for循环的方法的数据类型一定有__iter__方法
python规定,只要内部有__iter__方法的数据类型就叫做可迭代,他们都拥有可迭代协议
当可迭代对象经过__iter__方法执行后就变成了迭代器
s = [1,2,3,4,5].__iter__() print(s)
iter_l = [1,2,3,4,5,6].__iter__() #获取迭代器中元素的长度 print(‘A‘,iter_l.__length_hint__()) #根据索引值指定从哪里开始迭代 print(‘*‘,iter_l.__setstate__(4)) #一个一个的取值 print(‘**‘,iter_l.__next__()) print(‘***‘,iter_l.__next__())
拿列表举例,当一个列表执行了__iter__方法之后他的返回值就是一个迭代器。
能被for循环的都可迭代,可迭代对象都含有__iter__方法,当他们[变成迭代器后]通过__next__方法可以从迭代器中[一个个]取值
iter_l = [1,2,3,4,5,6].__iter__() print(iter_l.__next__()) print(iter_l.__next__()) print(iter_l.__next__()) print(iter_l.__next__())
迭代器的好处:
节省内存(迭代器将元素一个个输出,不会一下子存进内存中)
**明日整理生成器