生成器函數
阿新 • • 發佈:2019-04-09
urn yield ext next 代碼 pri for 定義 def 生成器函數定義
#函數中定義了yield,並不是普通函數,而是生成器函數
#yield 返回數據,讓函數分段執行
#return 返回數據,結束本函數調用
def fun():
print(‘調用函數1‘)
yield ‘raa‘
print(‘調用函數2‘)
yield ‘roo‘
print(‘調用函數3‘)
yield ‘rtt‘
# print(‘報錯‘) #最後一個yield後面代碼塊,使用__next__叠代會報錯
g = fun() #通過fun()創建生成器
#第一次叠代(循環)
print(g.__next__()) #返回raa
結果:
F:\myPy\venv\Scripts\python.exe F:/myPy/test.py調用函數1
raa
#第一次叠代(循環)
print(g.__next__()) #返回raa
#第二次叠代(循環)
print(g.__next__()) #返回roo
結果:
F:\myPy\venv\Scripts\python.exe F:/myPy/test.py
調用函數1
raa
調用函數2
roo
#第一次叠代(循環)
print(g.__next__()) #返回raa
#第二次叠代(循環)
print(g.__next__()) #返回roo
#第三次叠代(循環)
print(g.__next__()) #返回rtt
結果:
F:\myPy\venv\Scripts\python.exe F:/myPy/test.py調用函數1
raa
調用函數2
roo
調用函數3
rtt
- 生成器函數使用循環,(詳情見:for循環本質)
def fun(): yield ‘raa‘ yield ‘roo‘ yield ‘rtt‘ g = fun() #生成器函數與for循環本質是一個叠代器,可以叠代 for i in g: print(i)
結果:
F:\myPy\venv\Scripts\python.exe F:/myPy/test.py
raa
roo
rtt
生成器函數