生成器,裝飾器,迭代器
什麼叫遞迴?什麼叫迭代?
迭代是乙個重複的過程,每次重複即一次迭代,並且每次迭代的結果都是下一次迭代的初始值
迭代器協議
物件必須提供乙個next方法,執行該方法有2個結果,要麼返回迭代中的下一項;要麼引起乙個stuopiteration異常,以終止迭代。(只能往後走不能往前退)
可迭代物件
實現了迭代器協議的物件。(內部有__iter__方法)
for迴圈
本質是迴圈所有物件,全部使用迭代器協議。
l = [1,2,3]
for i in l:
print(i)
#遵循迭代器協議訪問物件
for迴圈可以呼叫他們內部的__iter__方法,把他們變成可迭代物件,繼續呼叫__nexct__方法,所以可迭代物件指的是內建有__iter__方法的物件,即obj.__iter__。
#for迴圈的工作原理
#1:執行in後物件的dic.__iter__()方法,得到乙個迭代器物件iter_dic
#2: 執行next(iter_dic),將得到的值賦值給k,然後執行迴圈體**
#3: 重複過程2,直到捕捉到異常stopiteration,結束迴圈
生成器
#只要函式內部包含有yield關鍵字,那麼函式名()的到的結果就是生成器,並且不會執行函式內部**
def foo():
print('===>','1')
yield 1
print('====>', '2')
yield 2
#空兩行
f= foo()
print(f)
print(f.__next__())
print(f)
print(f.__next__())
#例項化foo(),那麼其實沒有執行函式,返回乙個生成器
#列印迭代器的值,一次列印乙個
===> 1
1 #列印第二個
====> 2
2
#生成器函式
square_generator = (x * x for x in range(50000))
for i in range(10):
print(next(square_generator))
好處
1.把函式做成迭代器
2.對比return,可以返回多次值,可以掛起/儲存函式的執行狀態
裝飾器
MySQL相關知識點整理
文章目錄 一 資料庫的三正規化 第一正規化 強調的是原子性,即資料庫表的每一列都是不可分割的原子資料項 第二正規化 要求實體的屬性完全依賴於主關鍵字。第三正規化 任何非主屬性不依賴於其它非主屬性。二 一張自增表裡面總共有 7 條資料,刪除了最後 2 條資料,重啟 mysql 資料庫,又插入了一條資料...
Python知識點整理
參考 python.doc 廖雪峰的python教程 使用 將兩行 為一行 if 1900 year 2100 and1 month 12 and1 day 31 and0 hour 24 and0 minute 60 and0 second 60 looks ike a valid date re...
python知識點整理
1 python列表和元祖 python包含6中內建的序列,即列表 元組 字串 unicode字串 buffer物件和xrange物件。通用序列操作 索引 分片 序列相加 乘法 成員資格 in 長度 len 最小值 min 和最大值 max 2 python字典 花括號 字典是另一種可變容器模型,且...