国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

python中Genarator函數(shù)用法分析

2020-02-23 00:35:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了python中Genarator函數(shù)用法。分享給大家供大家參考。具體如下:

Generator函數(shù)的定義與普通函數(shù)的定義沒(méi)有什么區(qū)別,只是在函數(shù)體內(nèi)使用yield生成數(shù)據(jù)項(xiàng)即可。Generator函數(shù)可以被for循環(huán)遍歷,而且可以通過(guò)next()方法獲得yield生成的數(shù)據(jù)項(xiàng)。

def func(n):   for i in range(n):    yield i for i in func(3):  print i r=func(3) print r.next() print r.next() print r.next() print r.next()

運(yùn)行結(jié)果如下:

012012Traceback (most recent call last): File "generator.py", line 10, in <module>  print r.next()StopIteration

yield保留字與return 語(yǔ)句的返回值和執(zhí)行原理都不相同。yield生成值并不會(huì)中止程序的執(zhí)行,返回值后程序繼續(xù)往后執(zhí)行。return 返回值后,程序?qū)⒅兄箞?zhí)行。

Generator函數(shù)一次只返回一個(gè)數(shù)據(jù)項(xiàng),占用更少的內(nèi)存。每次生成數(shù)據(jù)都要記錄當(dāng)前的狀態(tài),便于下一次生成數(shù)據(jù)。

當(dāng)程序需要較高的性能或一次只需要一個(gè)值進(jìn)行處理時(shí),使用generator函數(shù)。當(dāng)需要獲取一次性一組元素的值時(shí),使用序列。

函數(shù)里只要有了yield,這個(gè)函數(shù)就會(huì)被編譯成一個(gè)generator 函數(shù)。generator函數(shù)object支持python iterator protocol。 每次調(diào)用這個(gè)對(duì)象的next,generator函數(shù)就執(zhí)行到y(tǒng)ield,獲取到y(tǒng)ield生成的值。如果函數(shù)返回,就拋出一個(gè)異常。這里有個(gè)概念就是generator 函數(shù)使用yield生成一個(gè)值,而不是返回一個(gè)值。生成之后函數(shù)還沒(méi)結(jié)束,返回了函數(shù)就結(jié)束了。

>>> x = gensquares(5)>>> print x<generator object at 0x00B72D78>>>> print x.next()0>>> print x.next()1>>> print x.next()4>>> print x.next()9>>> print x.next()16>>> print x.next()Traceback (most recent call last): File "<stdin>", line 1, in ?StopIteration>>>

希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 尼勒克县| 磴口县| 云安县| 晴隆县| 青冈县| 含山县| 灌云县| 平湖市| 东城区| 新化县| 尤溪县| 西吉县| 恩平市| 化德县| 宝清县| 内江市| 兴安盟| 吕梁市| 五大连池市| 双辽市| 崇义县| 利辛县| 陵川县| 西丰县| 赞皇县| 石河子市| 屏东市| 清流县| 高碑店市| 英山县| 漯河市| 康保县| 拉萨市| 信丰县| 河源市| 洛隆县| 涞水县| 天镇县| 盐边县| 平阴县| 女性|