第二模塊學習: 生成器,迭代器,內置函數 生成器特點:只有在調用時才會生成相應的數據,運行的速度快! 示例: yield 生成器斷點緩存 可賦於變數 .send()可以為yield 傳值、數據 示例: 迭代器:Iterator 可以返回下一個值的迭代對象,就可以稱為迭代器 迭代對象:Iterable ...
第二模塊學習: 生成器,迭代器,內置函數
生成器特點:只有在調用時才會生成相應的數據,運行的速度快!
示例:
1 def fil(max):#斐波那契數 2 n,a,b=0,0,1 #定義初始數據 3 4 while n<max: 5 yield b 6 a,b=b,a+b #進進第二次的賦值 7 n+=1 8 9 10 return '---deno----' 11 12 a=fil(10) 13 while True: 14 try: 15 print(a.__next__())#列印返回值 16 except StopIteration as e:#異常返回 17 print('XXXXXX',e.value) 18 break
yield 生成器斷點緩存 可賦於變數
.send()可以為yield 傳值、數據
示例:
1 #利用生成器 可形成多併發 2 # 3 name_1='銷售點A' 4 name_2='銷售點B' 5 name_sc='大豐廠' 6 yf='衣服' 7 8 def a(name): 9 print("產品%s………準備完畢………"%name) 10 while True: 11 doc=yield#生成器斷點緩存 12 print('%s在銷售\033[32;1m%s\033[0m'%(name,doc))#傳入列印出來 13 14 # c=a('銷售點A') 15 # c.__next__()#首次運行載入 doc 16 # yf='衣服' 17 # c.send(yf) 18 # c.__next__() 19 # c.__next__() 20 # c.__next__() 21 def b(name): 22 print("產品%s………準備完畢………"%name) 23 while True: 24 doc=yield#生成器斷點緩存 25 print('%s在銷售\033[32;1m%s\033[0m'%(name,doc))#傳入列印出來 26 27 def sc(name):#生產產家 28 29 c=a(name_1) 30 d=b(name_2) 31 c.__next__()#首次載入 32 d.__next__() 33 print('%s開始生產了…………'%name) 34 for x in range(10): 35 print('生產了%s件%s'%((x+1)*2,yf)) 36 c.send(yf) 37 d.send(yf) 38 39 sc(name_sc)
迭代器:Iterator
可以返回下一個值的迭代對象,就可以稱為迭代器
迭代對象:Iterable
可以被for迴圈的對象,如列表,字典,字元串等,可以稱為迭代對象!
iter() 可以將迭代對象轉化有迭代器
生成器屬於迭代器中的一種
內置函數:
1 abc(i)#返回絕對值 2 all()#當可迭代對象值都為真時才返回真 3 any()#當可迭代對象值有一個為真時就返回真 4 ascii()#可以將列表轉為ascii表對應的字元串輸出 5 bin()#十進位轉二進位………………