python相關知識點整理三(自己複習用)

2021-08-18 21:26:10 字數 1272 閱讀 7131

生成器,裝飾器,迭代器

什麼叫遞迴?什麼叫迭代?

迭代是乙個重複的過程,每次重複即一次迭代,並且每次迭代的結果都是下一次迭代的初始值

迭代器協議

物件必須提供乙個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字典 花括號 字典是另一種可變容器模型,且...