Python教程

python生成器

本文主要是介绍python生成器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

通过斐波那契数列理解生成器

f(n)= f(n-1)+ f(n-2)

def fib(n):
    # a,b分别为第一项和第二项
    a, b = 0, 1
    x = 0
    while x < n:
        x, a = a+b, b
        b = x
        print(x)
# fib(6)

def fib_gen(n):
    a, b = 0, 1
    x = 0
    while x < n:
        x, a = a + b, b
        b = x
        yield x

f = fib_gen(6)
print(f.__next__())
print(f.__next__())

普通函数时顺序执行,遇到return或者最后一行函数语句就返回。而generator,在每次调用next()的时候才执行,遇到yield语句就暂停并返回到函数外,再次被next()函数调用时从上次返回的yield语句处继续执行。

举例:

每次yield之后会返回到函数外,不会执行if newn之后的内容。

def count_down(n):
    print('生成器启动')
    while n >= 0:
        newn = yield n
        print('newn', newn)
        if newn:
            print('if')
            n = newn
            print('n =', n)
        else:
            n -= 1

cd = count_down(5)

# for i in cd:
#     print('i=', i)
#     if i == 5:
#         cd.send(3)
print(cd.__next__())
cd.send("dzw")
print(cd.__next__())
print(cd.__next__())
print(cd.__next__())

 

这篇关于python生成器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!