###对于yield通过下面一段代码做一个简单描述:
#python3
def fib(n):
cnt = 1
a,b = 0,1
while cnt <= 10:
cnt += 1
yield b
a, b = b, a+b
for i in fib(10):
print(i)
这是一段前n个斐波那契数列的代码,首先1、函数中有yield那么这不是一个普通函数,他会返回一个迭代对象因此可以想象fib(1)~fib(10)相当于返回10次迭代对象,那么可以用for来通过迭代方式输出每次值;2、每次运行到yield则返回对象,下次开始是从yield的下一条开始运行。
【注意】:对于之前学过的c++与java不习惯a,b = b, a+b这种赋值方法,这种赋值此时的a,b的值都是指向之前的a和b的值的。若a=1,b=2 那么a,b = b, a+b此时a=2,b=3(这里b并不是4)