day14 迭代器 生成器 面向過程程式設計

2021-09-09 06:59:32 字數 2510 閱讀 9656

上節回顧

裝飾器有參裝飾器

無參裝飾器

語法糖wraps裝飾器

什麼時候需要使用到裝飾器:

1.要增加新功能,但是不能修改源**和呼叫方式

2.實際開發時,用得最多的就是,將一段公共**提取到裝飾器(登入驗證)

裝飾器使用到的知識點:

閉包函式

函式物件

命名空間 作用域

語法糖函式巢狀

01迭代器

什麼是迭代器(iterator):

器指的是某種工具

迭代指的是更新換代的過程,例如應用程式的版本更新 從1.0變成了1.1

可迭代物件:

指的就是可以使用迭代器取出資料的物件

如何判斷乙個物件是否可迭代,就看這個物件是否提供迭代器,通過物件呼叫__iter__()來檢視

檔案也是可迭代物件

帶有__開頭__結尾的方式都是內建的特殊方式,會在某個時間自動執行

所有的容器型別(包括字串)都是可迭代的

對於for而言 所有的物件都需要先判斷是否是乙個可迭代物件

迭代器總結:

迭代器是一種通用的取值工具

只要具備__iner__()方法的物件才能被迭代器,稱之為可迭代兌現

迭代器是為了取值,只要具備next方法的就是迭代器

python中迭代器同時劇本iter方法和next方法的, 呼叫iter將返回迭代器

為什麼用迭代器:

統一方式

如何使用迭代器:

1.通過呼叫物件的__iter__()方法得到迭代器

2.通過迭代器的__next__()方式來獲取每乙個值

判斷乙個物件是不是迭代器:

迭代是為了取值,取值使用next方法,那麼只要物件具備next就稱之為迭代器

其中,檔案型別比較特殊,它既是迭代器  又是可迭代物件

迭代器物件乙個是乙個可迭代物件

可迭代物件不一點是迭代器

02生成器

什麼是生成器

generator

生成資料的工具

生成是從無到有的過程   

工具可以直接看成是函式,我們可以自己來定義乙個函式來產生資料,但是每次執行函式都只能產生一次資料

生成器的目的就是可以多次(不斷的)生成資料

在python中生成器就是乙個函式

但是函式內部具備至少乙個yield關鍵字

反過來只要函式**現了yieldname該函式就是乙個生成器

關鍵字 yield

一旦函式彙總出現了yield,呼叫函式是就不好立即執行函式體.並且會返回乙個生成器物件

當呼叫生成器的next方法時,會執行函式體,但是如果執行期間遇到了yield 函式就是暫停執行

每一次呼叫next都是繼續上一次yiled的位置繼續往下執行,同時會將yield後的資料返回值呼叫者

yield 與returen的區別

都能返回乙個值

不同之處在於:return值只要執行return函式就整體結束了

而yield可以返回多次值 並且會在返回後將行暫停

生成器就是迭代器:

生成器同時具備iter個nxet函式,足以證明其就是乙個迭代器,所以可以直接使用for 老便利

迭代器就是通過生成器顯示的

跌大氣,生成器 for之間的關係 

for的原理是使用迭代器取值

迭代器是通過生成器實現的

了解知識點:

yield的特殊用法

當你的生成器中需要外界資料參與時,生成器如何接受外界刺激?

閉關和引數都能傳資料到生成器中.但是只能接受一次值,如果要想多次傳值就需要使用send函式了    

send函式用於向生成器傳送資料,但是要注意必須先進行初始化,也就是先呼叫一次__next__(方法)

總結迭代器?

for迴圈的實現原理

內部就是在獲取迭代器,不斷的呼叫next幫你取值,取到沒有值為止

可迭代物件 就是擁有__iter__的物件

生成器為了不斷的產生資料

迭代器就是通過生成器實現的

生成器的本質是乙個函式 但是其中包好了yield關鍵字

03面向過程程式設計

是一種程式設計思想,同樣的在程式設計界不只有這一種程式設計思想,還有物件導向等

程式設計思想沒有高低之分,只有適合不適合

你要思考的是什麼樣的應用程式應該採用哪種程式設計思想

核心在於過程,指的是在程式設計時時刻想著過程

過程指的是,第一步該幹什麼第二步幹什麼,完成這個任務需要哪些步驟以及每個步驟要幹什麼

面向過程程式設計思想的優點與缺點:

優點:可以將乙個複雜的大問題,拆分為簡單的小問題    (將複雜的問題簡單化,流程化)

缺點: 牽一發需要動全身  擴充套件性極差,正因為如此 才有了新的變成思想 即物件導向

使用場景:對於一些對擴充套件性要求不高的應用程式,建議採用面向過程 例如系統核心 shell指令碼程式

後期我們發開的應用程式是直接面向使用者的,需求變化非常頻繁,所以這個時候就需要使用物件導向了

day14 迭代器和生成器

迭代器和生成器 迭代器可迭代協議 含有iter方法的都是可迭代的 迭代器協議 含有next和iter的都是迭代器 特點節省空間 方便逐個取值,乙個迭代器只能取一次.生成器生成器函式 含有yield關鍵字的函式都是生成器函式 生成器函式的特點 呼叫之後函式內的 不執行,返回生成器 每從生成器取乙個值就...

生成器 迭代器

最近見天一直在看廖大的python教程,卻發現很多基礎看著很簡單,但卻不會應用,歸根結底還是因為理解不到位,故而又將教程學了一遍,並將自己的理解記錄一下,也方便後面查閱。由於沒有相關程式設計基礎,有些理解可能是錯的,敬請批評指正。想深入具體學習廖大部落格請移步廖雪峰的官方 有時候用迴圈生成列表太過繁...

迭代器,生成器

迭代器 生成器 生成器的第1種實現方式 列表生成式改為生成器 python中yield關鍵字 函式中如果有yield,那麼呼叫這個函式的返回值為生成器。當生成器g呼叫next方法,執行函式,知道遇到yield就停止 再執行next,從上一次停止的地方繼續執行 函式中遇return直接退出,不繼續執行...