Python學習之生成式的send 詳解

2021-08-01 01:13:45 字數 602 閱讀 7294

python學習

有所幫助。

def generator():

while true:

receive=yield 1

print('extra'+str(receive))

g=generator()

print(next(g))

print(g.send(111))

print(next(g))

輸出:1

extra111

1extranone

1為什麼會這樣呢,點進send就能看到一句話

send:resumes the generator and "sends" a value that becomes the result of the current yield-expression.

就是說 這裡yield 1整體被視為乙個表示式,你send的內容會作為這個表示式的值,隨便你左邊用什麼東西接收或者不接收,總之yield就是你send進來的那個東西。這個表示式變成你send進來後的東西後繼續執行,再次遇到yield,輸出yield後面跟著的表示式。

當然通常使用的話都不會輸出乙個常量,會輸出乙個和接收到的東西相關的量,不然豈不是白白傳送了。

Python之生成式

1.集合的生成式 一般格式 1 將集合中的每乙個元素分別平方 此時輸出的是乙個物件 print i 2 for i in 轉換為集合,集合會自動去重 2 將集合中是3的倍數的所有元素分別平方 2.列表的生成式 一般格式 表示式 for i in 列表序列 if 1 找出1 10之間的所有偶數,並返回...

Python之字典生成式

1.假設有20個學生,名字為westosx,學生分數在60 100之間,篩選出成績在90分以上的學生 import random stuinfo for i in range 20 name westos str i score random.randint 60,100 stuinfo name ...

python 列表生成式的學習

看個例子 定義乙個列表 l 1,2,3,4,5 用於建立乙個list,結果依次返回列表l的元素的平方,返回list s i i for i inl 列印列表s print s 用於建立乙個生成器,結果依次返回列表l的元素的平方,返回generator s1 i i for i inl 以列表形式列印...