python yield 學習筆記

學習yield之前,瞭解了迭代器, 生成器的概念。 沒有太多的細化。

迭代器對象: 支持iter和next()方法, 其中iter()方法返回迭代對象本身; next()方法返回容器的下一個元素, 在結尾時印發StopIteration異常。

生成器是迭代器,但是隻能遍歷一次。

yield返回的就是生成器。

看實例, 銀行生成器。

# -*- coding: utf-8 -*-
"""
Created on Fri Dec 18 13:30:07 2015

@author: weeds
"""

class Bank():
    crisis = False
    def create_atm(self):
        while not self.crisis:
            yield "$100"

hsbc = Bank()
corner_street_atm = hsbc.create_atm()
print corner_street_atm.next()

print corner_street_atm.next()
print [corner_street_atm.next() for cash in range(5)]

hsbc.crisis = True

#print corner_street_atm.next()
wall_street_atm = hsbc.create_atm()
#print wall_street_atm.next()

hsbc.crisis = False
print wall_street_atm.next()
print corner_street_atm.next()
print corner_street_atm.next()

最近看過一篇Python性能優化的軟件, 多用yield.

參考文章

發佈了289 篇原創文章 · 獲贊 280 · 訪問量 130萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章