Python:生成器

什么是生成器?

一边循环一边计算的机制,我们称之为生成器 它也是一种特殊的迭代器

创建生成器的两种方式:

1. 把列表推导式的[]换成()

nums = [x for x in range(5)]
print(type(nums))
print(nums)

nums2 = (x for x in range(5))
print(type(nums2))
print(nums2)

2. 在函数中定义yield关键字,那么此时这个函数就不再是一个函数,而是一个生成器

def fib_generator():
    num1 = 1
    num2 = 1
    while True:
        temp_num = num1
        num1, num2 = num2, num1+num2
        # return temp_num  # 方式1代码
        yield temp_num 


# 方式2代码(可以生成斐波那契数列)
fib = fib_generator()
print(next(fib))
print(next(fib))
print(next(fib))
print(next(fib))

yield的作用是把生成器挂起,并把yield后面的值返回

而next()方法是为了唤醒生成器,并获取函数中yield返回的值

 

posted @ 2020-04-21 21:10  好咸一条鱼  阅读(140)  评论(0)    收藏  举报