生成器:生成器屬於迭代器,通過next()方法取值,可以用於for循環,通過yield可以自定義生成器。
例:
>>> def test_yield(n):
... i = 0
... while i <n:
... yield i**2
... i+=1
...
>>> g1 = test_yield(10)
>>> g1
<generator object test_yield at 0x7f1eeaefbaa0> ########g1爲生成器
>>> g1.next()
0 ##生成器通過next()方法取值,每次g1調用函數時,當遇到yield時,函數停止,再次執行next()函數時,取下一個值(i**2)
>>> g1.next()
1
>>> g1.next()
4
>>> g1.next()
9
>>> g1.next()
16
>>> g1.next()
25
>>> g1.next()
36
>>> g1.next()
49
>>> g1.next()
64
>>> g1.next()
81
>>> g1.next() ##########取值結束,拋出異常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration