def test():
print("階段1")
yield 3
print("階段2")
yield 5
#呼叫function, 回傳生成器
gen=test()
print(gen)
for data in gen:
print(data)
此時搭配for迴圈後, 才會回頭看test()這個程式碼
output
<generator object test at 0x0000021E44B467C8>
階段1
3
階段2
5
實際應用
def generate_even(max_num):
number=0
while number<max_num:
yield number
number += 2
enev_generator = generate_even(100)
for data in enev_generator:
print(data)
python中可疊代的資料型態包刮string, list, set, dictionary 但上述的是靜態的疊代資料(需事先準備好), 如要動態產生疊代資料則需使用Generator
function中只要使用到yield, 就會和普通的function運作方式不一樣
此時output不會有任何結果 當執行到
gen=test()
時, 此時因為function中有yield, 只會進行產生生成器的工作(yield), 其他程式碼暫時不執行此時搭配for迴圈後, 才會回頭看test()這個程式碼 output
實際應用