日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python基础(迭代器,生成器,装饰器)

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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基础(迭代器,生成器,装饰器)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。