python中yield简单理解(斐波那契数列)

###对于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)

猜你喜欢

转载自blog.csdn.net/small__snail__5/article/details/80904299
今日推荐