1. 程式人生 > >Python隨心記--綜合練習 生成器特性闡釋

Python隨心記--綜合練習 生成器特性闡釋

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)