在for迴圈中碰到yield會暫停本次迴圈,直到執行下一次__next__()才繼續往下執行**。
def test():
for i in range(5):
print('第%s次執行' % i)
yield i
print('開始新的迴圈')
g = test()
g.__next__()
# 第0次執行
g.__next__()
# 開始新的迴圈
# 第1次執行
g.__next__()
# 開始新的迴圈
# 第2次執行
g.__next__()
# 開始新的迴圈
# 第3次執行
next(g)
# 開始新的迴圈
# 第4次執行
g.__next__()
# 開始新的迴圈
實現嘀嗒函式def tick():
while 1:
yield '嘀'
yield '嗒'
g = tick()
print(g.__next__())
# 嘀print(g.__next__())
# 嗒print(g.__next__())
# 嘀print(g.__next__())
# 嗒
統計班級人數佔年紀人數百分比
eval可以將字串轉換成對應的資料型別
使用with開啟檔案不需要手動執行close
data.text:
get.py
def get_total():
with open('data', 'r', encoding='utf-8') as f:
for i in f:
yield eval(i)['students']
g = get_total()
c1 = g.__next__()
c2 = g.__next__()
c3 = g.__next__()
c4 = g.__next__()
total = c1 + c2 + c3 +c4
print(c1 / total, c2 / total, c3 / total, c4 / total)
# 0.24 0.28 0.224 0.256
python生成器函式 Python 生成器函式
一 生成器 生成器指的是生成器物件,可由生成器表示式得到,也可使用 yield 關鍵字得到乙個生成器函式,呼叫這個函式得到乙個生成器物件 生成器物件,是乙個可迭代物件,是乙個迭代器 生成器物件,是延遲計算 惰性求值的 1.1 生成器函式 函式體重包含 yield 語句的函式,就是生成器函式,呼叫後返...
生成器函式
pyhon優雅的魔力使生成器函式很特殊,它們像定格相機一樣工作。當乙個標準函式遇到return語句時,它會返回值,然後函式會丟棄內部的所有資料。當下次呼叫時,一切從頭開始。yield語句會做不同的事情。它像return一樣返回乙個值,但是它不會使函式丟棄資料,相反所有資料都被儲存起來。usr bin...
生成器函式
什麼是生成器 生成器是能夠動態提供資料的物件,生成器物件也是可迭代物件 例項 生成器有兩種 生成器函式 生成器表示式 生成器函式的呼叫將返回乙個生成器的物件,生成器物件是乙個可迭代物件 defmyyield 此函式為生成器函式 yield 2yield 3yield 5yield 7 此時生成乙個生...