91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中yield關鍵字怎么理解?

發布時間:2020-08-06 08:11:02 來源:網絡 閱讀:662 作者:luckky 欄目:編程語言

本文簡短翻譯自鏈接 StackOverflow。
在理解yield之前,你必須先知道iterable(迭代器)和generator(生成器)。

iterable

當你創建一個list,你能一個接一個讀取list的每一項。能一個接一個讀取每一項的就是迭代器。

>>> mylist = [1, 2, 3]
>>> for i in mylist:
...    print(i)
1
2
3

mylist是一個iterable,當你用列表推導式生成一個列表,也是iterable

>>> mylist = [x*x for x in range(3)]
>>> for i in mylist:
...    print(i)
0
1
4

一切能用for.......in.......的都是迭代器,例如lists,strings,files。。。

generator

generator是一種只能迭代一次的iterable。生成器不會再內存中儲存值,它只會在程序運行的時候生成值。

>>> mygenerator = (x*x for x in range(3))
>>> for i in mygenerator:
...    print(i)
0
1
4

它和上面的不同僅僅是把`[]替換成()。生成器只能使用一次。

yield

yield和return的用法相似,只是,使用yield函數將返回一個生成器。

>>> def createGenerator():
...    mylist = range(3)
...    for i in mylist:
...        yield i*i
...
>>> mygenerator = createGenerator() # create a generator
>>> print(mygenerator) # mygenerator is an object!
<generator object createGenerator at 0xb7555c34>
>>> for i in mygenerator:
...     print(i)
0
1
4

當你需要使用大量只需要使用一次的數據時,你就可以使用yield。
你需要知道的時,當你調用createGenerator()這個函數時,函數里面的代碼并不會運行,函數會返回一個生成器對象。
每次對生成器對象用for,函數里面的代碼都會運行一次。
以下是理解的關鍵部分:

for的每次循環,函數里面的代碼都會執行,直到遇到yield,然后把值返回。當循環到頭了或者函數不滿足"if...else"條件時,生成器為空。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉鱼县| 静宁县| 新龙县| 翁牛特旗| 邢台市| 荃湾区| 镇宁| 嘉禾县| 乌兰察布市| 廉江市| 秦皇岛市| 喀什市| 金华市| 镇坪县| 七台河市| 雷州市| 邳州市| 余江县| 威宁| 宜兰市| 双辽市| 泰兴市| 石城县| 龙海市| 曲阜市| 合江县| 耒阳市| 西华县| 漳平市| 南和县| 高邑县| 固原市| 嘉峪关市| 湛江市| 平顺县| 个旧市| 铜梁县| 内丘县| 武穴市| 闸北区| 开阳县|