DAY14(PYTHONS)生成器進階
def average(): sum = 0 count = 0 avg = 0 while True: #迴圈 num = yield avg #遇到yield就停止,防止一開始除數為0導致崩潰 sum += num count +=1 avg = sum/count avg_g = average() #生成器獲取 avg_g.__next__() #執行生成器的__next__()函式,跳到第一個yield之後avg1 = avg_g.send(10) #執行生成器的send()函式,把10帶入num,開始執行並返回avg avg2 = avg_g.send(20) print(avg1,avg2)
千萬注意縮排,剛開始我while True:下面沒縮排,就導致程式碼錯誤,正確輸出如下:
10.0 15.0
下圖是添加了裝飾器,以及程式的執行步驟
相關推薦
DAY14(PYTHONS)生成器進階
def average(): sum = 0 count = 0 avg = 0 while True: #迴圈 num = yield avg #遇到yield就停止,防止一開始除數為0導致崩潰
python-生成器進階~各種推導式
b- cnblogs keys opened pla one 偶數 print 實現 列表推導式 例一:30以內所有能被3整除的數 列表推導式1 multiples = [i for i in range(30) if i % 3 is 0] print(multiple
python-生成器進階~生成器函數
logs 衣服 with 數據 每次 log -a none open 監聽文件末尾追加的例子 def tail(): f = open(‘文件‘,‘r‘,encoding=‘utf-8‘) f.seek(0,2) while True:
Python全棧學習筆記day 14:生成器進階、生成器的表示式、各種推導式
一、生成器進階 #send 獲取下一個值的效果和next一致 #只是在獲取下一個值的時候,給上一yield的位置傳遞一個數據 #使用send的注意事項 # 第一次使用生成器的時候 是用next獲取下一個值 # 最後一個yield不能接受外部的值 # 第一次不能用send
生成器進階
def generator(): print(123) content = yield 1 print('=======',content) print(456) arg = yield 2 '''''' yield g1 = generator(
【python 第七日】迭代器類和生成器進階
迭代器中的throw 放出異常,消耗一個yield def gen(): while True: try: yield 'normal value' yield 'normal value 2'
day14 生成器函式進階和生成器表示式
1複習 # 迭代器和生成器 # 迭代器: # 雙下方法 : 很少直接呼叫的方法。一般情況下,是通過其他語法觸發的 # 可迭代的 —— 可迭代協議 含有__iter__的方法('__iter__' in dir(資料)) # 可迭代的一定可以被for迴圈 # 迭代器協議: 含有__iter__和__ne
python開發函數進階:可叠代的&叠代器&生成器
== ict turn lena log 中新 odin 使用 def 一,可叠代的&可叠代對象 1.一個一個的取值就是可叠代的 iterable#str list tuple set dict#可叠代的 ——對應的標誌 __iter__ 2.判斷一個變量
生成器函數的進階和表達式and各種推導式
gen 內存地址 print %d clas 傳遞 gpo 區別 數據類型 生成器函數的進階 send的效果與作用範圍和next一模一樣 send獲取下一個值的效果和next基本一致 第一次不能用send 函數中的最後一個yield不能接收新的值 只是再獲取下一個值的時候,
函數進階--生成器與叠代器
判斷 pen 獲得 文件 代碼 列表生成式 可叠代對象 PE odin 列表生成式 列表生成式就是將一些簡單的代碼合並成一條代碼來寫 # 需要將列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]各自加1 #普通會這樣寫 a = [1,3,4,6,7,7,8
生成器函數進階
style ide src div 生成 next 過去 執行 display 1.生成器函數進階(一) 1 # 生成器函數進階 2 3 def generator(): 4 print(123) 5 num = yield 1 #
python3.5進階(三)-------------實現多工之協程(生成器,迭代器)
1.迭代器:迭代是訪問集合元素的一種方式,迭代器是可以記住遍歷的位置的物件,迭代器物件從集合的第一個元素開始訪問,直到所有訪問結束,迭代器只能前進不能後退。判斷一個數據型別是否可以迭代,看是否能for迴圈。如(字串,列表,元祖...)序列可以迭代,數字不能迭代,或通過isintance([11,12
函式進階之生成器和迭代器
前提: 列表生成式 給列表a裡的大於5的每一個值加10 a = [1, 2, 5, 6, 7, 8] a = [i + 10 if i > 5 else i for i in a] # 可以迴圈任何可迴圈的東西,不過只能寫到列表或元組裡。 print(a) # [1, 2, 5, 16,
函數進階之生成器和叠代器
display 文件操作 但我 list 並且 -s 發送 str print 前提: 列表生成式 給列表a裏的大於5的每一個值加10 a = [1, 2, 5, 6, 7, 8] a = [i + 10 if i > 5 else i for i in a] #
Python基礎(8):python中的特性進階篇(迭代,列表生成式,生成器,迭代器)
python中還包括一些高階特性,以下簡單介紹。 迭代 定義:用for迴圈來遍歷物件的過程,叫做迭代。 作用物件:可迭代物件 如何判斷是否為可迭代物件:isinstance(xxx,Iterable),Iterable型別來源於collections模組。 應用場景: 1
Python進階系列連載(5)——生成器(上)
生成器 還記得在迭代器裡我們說為什麼將列表轉為迭代器麼? 小明:因為列表太大的話佔用記憶體太大,做成迭代器可以節省空間,用的時候再拿出部分 是的,今天要講的生成器是不會把結果儲存在一個系列中,而是儲存生成器的狀態。 在每次進行迭代時返回一個值,直到遇到St
python進階之 迭代器, 生成器
練習: 說出如下程式碼的列印結果 >>> def foo(): … print(111) … yield 222 … print(333) … yield 444 … print(555) >>&g
Python -- 面向物件進階之--生成器
生成器 1. 什麼是生成器 通過列表生成式,我們可以直接建立一個列表。但是,受到記憶體限制,列表容量肯定是有限的。而且,建立一個包含100萬個元素的列表,不僅佔用很大的儲存空間,如果我們僅僅需要訪問前面幾個元素,那後面絕大多數元素佔用的空間都浪費了。所以,如果列表元素可以
邁向大神day13 脫稿一期 生成器的進階
g=generator() #呼叫生成器 list(g) 從生成器中取值的集中方法 next for 資料型別的強制裝換 全部取完 佔記憶體 回顧: 迭代器和生成器 迭代器: 雙下方法 : 很少直接呼叫的方法。一般情況下,是通過其他語法觸發的 可迭代的
第十二天 生成器再進階
小知識點: print(函式名.__name__)就可以列印函式的以字串的名字的功能。 print(函式名.__doc__)列印函式文件的功能。 使用裝飾器會改變函式__name__的輸入。但是如果想使用原本函式的名字和文件的話,就可以使用以下模組: from functools impo