odoo 关于self的迭代器(1)迭代器初步

起因

在学习odoo对他们的self循环很不适应,所以决定留些东西在这里。

开篇

计算机最擅长做批量工作,所以任何语言都绕不开循环。循环我习惯这么分类(当真是个人的习惯,非常广义,不要较真):

1.以个数为限制的(工作中这种情况并不是太多)

n = 1
while n <= 100:
    print(n)
    n = n + 1

for in 是不支持这种方式的

2.有对象实体的

本文重点讨论这些有对象实体的。

绕不开的关键字iter,next

先上了简单的例子

for city in ["Berlin", "Vienna", "Zurich"]:
    print(city)
# =======================================
def MyPrint(iterable):
	iterator = iter(iterable)
	while True:
		try:
			item = next(iterator)
		except StopIteration:
			break
		else:
			print(item)

MyPrint(["Berlin", "Vienna", "Zurich"])

这两部分是等价的,或许下面我写。

大家也可以看到出现了4个很相似的名字iterable,iter,iterator,Stopiteration。

1.可迭代的iterable

我们可以简单理解为可以进行for循环的(还有一种循环用next但是不能用for,后面会说明)。

字符串,元组,链表,字典都是iterable。

2.iter

用来判定是否可迭代(iterable),并返回一个迭代器iterator。

3.迭代器iterator

返回一个可以用next逐次调用的数据流。

4.停止迭代Stopiteration

当next获取不到数据时,作为next的错误抛出状态

如此,上面的代码就一目了然了。

你可能感兴趣的:(python)