return、continue、break區別:
- return只能用在函數里面,表示從函數中返回,函數體內的后續任何代碼都不執行
- continue只是跳出當前循環,進入下一循環
- break只是跳出全部循環,如果循環后面還有代碼,會進行執行
Python3迭代器、生成器、閉包和裝飾器(三器一包):
迭代是訪問集合元素的一種方式。可以用for循環進行遍歷的對象稱為可迭代對象。
- 可以迭代的數據類型:列表、元組、字典、字符串
- 不可迭代的數據類型:整型、浮點型
迭代器是一個可以記住遍歷的位置的對象。迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會后退。
迭代器有兩個基本的方法:iter()創建迭代器對象和next()輸出迭代器的下一個。
>>> list=[1,2,3,4]
>>> it = iter(list) # 創建迭代器對象?
>>> print (next(it)) # 輸出迭代器的下一個元素?
1?
>>> print (next(it))
2
生成器是一個返回迭代器的函數,只能用于迭代操作。在Python中,使用了yield的函數被稱為生成器(generator)。或者將列表生成式中的[]換成()即為生成器。
yield是一個關鍵字,用于定義生成器函數,可以在迭代過程中逐步產生值,而不是一次性返回所有結果。當在生成器函數中使用yield語句時,函數的執行將會暫停,并將yield后面的表達式作為當前迭代的值返回。然后(每次調用生成器的next()方法或使用for循環進行迭代時)函數會從上次暫停的地方繼續執行,直到再次遇到yield語句。這樣,生成器函數可以逐步產生值,而不需要一次性計算并返回所有結果。調用一個生成器函數,返回的是一個迭代器對象。
閉包:在函數嵌套的前提下,內部函數可以訪問外部函數的變量,并且外部函數返回了內部函數,則把這個使用外部函數變量的內部函數稱為閉包函數
裝飾器其實也是一種閉包,其功能就是在不破壞目標函數原有代碼和功能的前提下,為目標函數增加新功能。