9月5日學習內容整理 send 生成器表示式

2022-05-11 16:32:55 字數 821 閱讀 2881

一、生成器函式中send的用法

value =  yield  1

如上式g.send( 123 )

1、程式執行到yield 1 時停止,程式停留在yield 1 這個位置,等待下一次執行

2、當使用send時,相當於也執行g._ _next_ _,這時程式會從yield 1的位置繼續執行,send傳遞過來的123會代替yield 1 這個位置從而賦值給value,程式繼續向下執行,直到再次遇到yield 

3、send不能在程式開始時用,雖然相當於_ _next_ _,但是程式找不到值去接受它。就算是程式一開始就是value = yield 1這種情況,不會說先執行到yield再賦值,這樣不符合邏輯,因為程式剛開始執行send就傳遞過來乙個值,沒有東西去接受它這時送進去的就是none,生成器剛啟動就接受乙個none值,這樣不符合邏輯,程式沒有辦法繼續執行下去,所以會報錯

二、生成器表示式和列表推導式

1、列表推導式:簡化**,但是記憶體占用很大

print([i*i for i in [1,3,5]])  #結果必須是乙個列表

類似的還有字典推導式,集合推導式主要用來去掉重複元素

2、生成器表示式:括號表示

只是乙個表示式,還是表示乙個生成器,括號裡的**不會直接執行,當外部取值(_ _next_ _/list/for)時括號裡的**才會執行

laomuji = ('egg%d'%i for i in range(10))

#簡化**,最重要的就是節省記憶體

注意:

1、不要寫太複雜的表示式

2、在**裡,多層巢狀的for迴圈時禁忌

c 筆記整理(2023年9月5日)

第三章 流程控制語句 1.switch 1.1c 中switch不支援從乙個case標籤貫穿到另乙個case標籤,除非case中沒有 1.2 break 只能用於 迴圈語句 while do while,for foreach switch,if注意 if 不能單獨與break使用,if要巢狀在迴圈...

9月26日學習內容整理 TCP協議的粘包現象

一 粘包現象的由來 tcp俗稱流式協議,源源不斷的傳送資料 但是tcp協議有個特點,就是會把間隔時間很短並且資料量較小的一些資料合為乙個大資料進行傳送 這個特點對於傳送端來說,如果連續傳送幾個資料量很小的資料流,那麼tcp就會將它們合為乙個大資料,接收端收到這個大資料就會不知道怎麼解析,分不清資料的...

1月25日學習內容整理 stark元件

stark元件就是在我們了解了admin元件的實現原始碼和流程之後,依據admin的執行流程來寫乙個完全自定義的增刪改查元件 第一步 init py from django.utils.module loading import autodiscover modules class name sta...