學習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
defcreate_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.
參考文章
python yield 學習心得
請看yield基礎教程,菜鳥教程無論排版還是內容都是十分優秀的 對於小白來講太友好 看完之後你得到的結論 1 包含yield的函式是乙個生成器,能減少記憶體開銷。關鍵是能讓 清晰,簡明。2 包含yield的函式,其中的變數 上下文 在下次執行時,依然保留。看高階教程 雖然博主說他的文章最簡單,但是其...
python yield用法,簡單
學習python的過程過程彙總,經常會遇到yield,但是經常是懵逼的狀態,到底是怎麼用的,自己寫了乙個函式後就明白了,其實很簡單,看下面就懂了。函式中yield用法def yield tst n while n 20 yield 返回 遇到yield就返回yield後面的值,相當於return 返...
python yield 簡單理解
要想理解yield的概念,我們必須理解python中迭代器和生成器的概念與作用。1.迭代器 iterables python中可以直接作用於for迴圈的物件,比如 列表 元祖 字典 集合 字串等統稱為可迭代物件。迭代器是乙個實現了迭代器協議的物件,其可以呼叫next 方法得到下乙個結果,在結果末尾呼...