|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小牛有话说:
各位鱼油,大家好。我是小牛,时光荏苒,岁月如梭,一晃半年过去了,小牛希望能在新的一年里把前面挖的坑给填起来,也衷心地希望各位鱼油能在阅读帖子过程中有所收获。。。。。。
本期主要内容导读:
这一期我们归纳一下鱼神第四十八讲“魔法方法:迭代器”。这一期里面鱼神首先讲解了迭代的概念,并介绍了迭代相关的魔法方法__iter__(self),__next__(self),并讲解了使用迭代的魔法方法实现斐波那契数列的方法。下面,我们将对上述内容进行详细展开
1. 相关知识点复习
try 需检测代码段 except EXCEPTION [as reason] 相应语句语句的用法,详见第33讲:异常处理,你不可能总是对的2. 当检测到程序异常时,将异常结果与给出的EXCEPTION比较。
2. 迭代器相关概念
迭代类似循环,每次的循环称为一次迭代,且本次迭代的结果将作为下次迭代的初始值。提供迭代操作的容器称为迭代器,我们所熟知的序列类型和字典类型均属于迭代器。关于迭代的内置函数有两个:iter()和next(),前者需要一个迭代器类型的参数,后者将迭代对象的参数输入出来,一直到完会出现Stop Iteration异常而终结,两者使用方法如下:
>>> string1 = "小甲鱼"
>>> iter1 = iter(string1)
>>> next(iter1)
'小'
>>> next(iter1)
'甲'
>>> next(iter1)
'鱼'
>>> next(iter1)
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
next(iter1)
StopIteration
for循环语句能够自动提取可迭代对象的每一个元素,这里面我们可以使用迭代内置函数和while循环语句实现for循环过程。
- string1 = "小甲鱼"
- iter1 = iter(string1)
- while True:
- try:
- print(next(iter1))
- except StopIteration as reason:
- break
复制代码
3. 迭代器相关魔法方法
这里面和内置方法对应,为__iter__(self)和__next__(self)。前者被触发返回迭代器对象,后者将初始值和后续值进行操作。for循环语句能够触发迭代器魔法方法,这里面举一个斐波那契数列实现的程序来说明迭代器类型的魔法方法如何使用。
- class Fabri:
- def __init__(self,n=10):
- self.a = 0
- self.b = 1
- self.n = n
- def __iter__(self):
- return self
- def __next__(self):
- self.a,self.b = self.b,self.a+self.b
- if self.a > self.n:
- raise StopIteration
- return self.a
复制代码
>>> a = Fabri()
>>> for each in a:
print(each)
1
1
2
3
5
8 |
|