python基础(迭代器,生成器,装饰器)
生活随笔
收集整理的這篇文章主要介紹了
python基础(迭代器,生成器,装饰器)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
python:
生成器:
因為當列表元素達到一定上限,列表會占很大內存空間來存儲,所以列表是受到內存限制的來適當使用.
生成器可以按照一個算法,循環推導出元素,就不用一次生成整個列表,而通過生成器(generator)來計算一下個元素
>>> l = [x * x for x in range(5)]
>>> l
[0, 1, 4, 9, 16]
>>> g =(x*x for x in range(5))
>>> g
<generator object <genexpr> at 0x02F372D0>
>>> g.__next__()
0
>>> g.__next__()
1
>>> g.__next__()
4
>>> g.__next__()
9
定義:一個函數調用時返回一個迭代器,那這個函數就叫做生成器(generator),如果函數中包含yield語法,那這個函數就會變成生成器?
1:( for 循環函數): 這里是括號
2:yield?
yield指令,允許停止函數并立即返回結果,函數保存其執行上下文,如果需要,可通過__next__()方法立即繼續執行。返回一個迭代器,函數send(arg)繼續剛剛中斷的yield并發送給yield函數一個參數
import time
def consumer(name):print("%s準備吃包子啦" %(name))while True:baozi = yieldprint("包子來了[%s],被[%s]吃了!"%(baozi,name))
def producer(name):c1 = consumer('l')c2 = consumer('z')c1.__next__()c2.__next__()print('%s要開始做包子啦'%(name))for i in range(1,10):time.sleep(1)print('做了兩個包子')c1.send(i)c2.send(i)
producer('ly')
? ?生成器不但可以作用于for循環,還可以被next()函數不斷調用并返回下一個值,直到最后拋出StopIteration錯誤表示無法繼續返回下一個值了
可以被next()函數調用并不斷返回下一個值的對象稱為迭代器:Iterator。
?
轉載于:https://www.cnblogs.com/zimsan/p/7866170.html
總結
以上是生活随笔為你收集整理的python基础(迭代器,生成器,装饰器)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017微信男人个性签名
- 下一篇: MyBatis启动:MapperStat