#函数中定义了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
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
原文:https://blog.51cto.com/13972320/2375625