#斐波那契數列指的是這樣乙個數列:1、1、2、3、5、8、13、21、34、…importtime
# def fib(times):
# a = 0
# b = 1
# n = 1
# while n<=times:
# print(b)
# a,b = b,a+b
# n+=1
# fib(7)
#生成器寫法
deffib(times):
a = 0
b = 1
n = 1
whilen<=times:
# print(b)
yieldb #儲存資訊狀態
time.sleep(1)
a,b = b,a+b
n+=1
return'done'
#沒什麼作用,但是當丟擲stopiteration異常的時候會返回return內容
f=fib(7)#生成器,呼叫一次返回乙個值;而不是像普通函式那樣去呼叫def fib()函式
# for i in f:
# print(i)
'''yield的作用就把乙個函式變成乙個生成器,帶有yield的函式不再是乙個普通
函式,python直譯器會將其視為乙個generator,呼叫fib(7)不會執行fib函式
而是返回乙個迭代器物件!在for迴圈執行時,每次迴圈都會執行fib函式內部的**,
執行到yield b時,fib函式就返回乙個值。下次再呼叫的時候,其它**接著由中斷
位置接著執行
'''# 獲取生成器函式返回值,用捕獲stopiteration異常,for。。in。。永遠不會出現異常,所以用while true
while true:
try:
print(next(f))
exceptstopiteration
ase:
print(e.value)
break#所以需要返回值的時候可以如此操作
#總結:
'''生成器它能夠記住上一次返回時函式體中的位置。對生成器函式的第二次(或第n次)
呼叫跳轉至函式中間yield處,而上次呼叫的所有的區域性變數都保持不變。
生成器不僅「記住」資料狀態,還記住它在流控制構造中的位置。
生成器的特點:
1、節約記憶體。
2、儲存(上一次)狀態。
'''
python3生成器 Python3 生成器
python3 生成器 閱讀 125 發布於 2020 05 19 14 29 25 在python中,一邊迴圈一邊計算出元素的機制,稱為生成器 generator。生成器的優點 一次返回乙個結果,延遲計算。這對於大資料量處理,是個非常有用的優勢。占用記憶體量是工程師必須考慮的乙個問題。提高 可讀性...
十 python3 生成器
生成器 generator 在 python 中,不必建立完整的 list,從而節省大量的空間。一邊迴圈一邊計算的機制。建立乙個 generator,有很多種方法。第一種方法很簡單,只要把乙個列表生成式的 改成 就建立了乙個 generator l x x for x in range 10 l 0...
python 3 生成器 and 迭代器
迭代器官方文件 大多是的檔案物件可以用for迴圈語句,例如 for element in 1,2,3 print element for element in 1,2,3 print element for key in print key for char in 123 print char fo...