Python隨心記--綜合練習 生成器特性闡釋
阿新 • • 發佈:2018-12-16
def getpopulation(): with open('a.txt',encoding='utf-8') as f: for i in f: yield i getP = getpopulation() getPnum = eval(getP.__next__()) print(getPnum['population']) def getpopulation(): with open('a.txt',encoding='utf-8') as f: for i in f: yield i getP= getpopulation() all_pop = sum(eval(i)['population'] for i in getP) #獲取總人數 print(all_pop)
#注意:迭代只能迭代一次,這裡getP在上邊已經迭代過了,所以下面的for迴圈不能在使用
#可以重新賦值給兩一個變數
for i in getP: print('%s %%' %eval(i)['population']/all_pop)
#yield 相當於return 控制的是函式的返回值
#x=yield的另外一個特性,接收send傳過來的值賦給x
def test():print('開始了') fisrt = yield 1 print('第一次',fisrt) yield 2 print('第二次') t = test() res = t.__next__() print(res) t.send(None) #可以觸發生成器執行 res = t.send('函式停留在哪兒,我就在哪兒賦值') #可以觸發生成器執行 print(res)