python之yield使用

生成器:生成器屬於迭代器,通過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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章