生成器:生成器提供了清晰的语法,能够一次访问一个序列,并不需要使用_iter_和next()这两个函数,我们也不用写一个类了。
注意:生成器和可迭代这两者才能制造一个迭代器。
一、示例代码1
SimpleCounter = (x**2 for x in range(1,10))
tot = 0
for x in SimpleCounter:
tot +=x
print (tot)
二、示例代码2
#函数my_gen()就是一个生成器,我们使用yield语句来返回一个序列输出。
#使用生成器对象时,我们只能访问序列一次。当我们完成对序列的访问时,就该立刻结束,不要在试图获取更多的数据。
def my_gen(low,high):
for x in range(low,high):
yield x**2
tot = 0
for val in my_gen(1,10):
tot += val
print(tot)
#使用生成器+可迭代两者制造一个迭代器
gen = (x**2 for x in range(1,10))
for val in iter(gen):
print (val)
285
1
4
9
16
25
36
49
64
81