python_生成器

生成器:

# 生成器函数(内部是否包含yield)
def func():
    print('F1')
    yield 1
    print('F2')
    yield 2
    print('F3')
    yield 100
    print('F4')
# 函数内部代码不会执行,返回一个 生成器对象。
v1 = func()
# 生成器是可以被for循环,一旦开始循环那么函数内部代码就会开始执行。
for item in v1:
    print(item)

总结:函数中如果存在yield,那么该函数就是生成器函数,调用生成器函数会返回一个生成器,生成器只有被for循环时,生成器函数内部的代码才会执行,每次循环都会获取yield返回的值。

yield from:

def base():
    yield 88
    yield 99

def func():
    yield 1
    yield 2
    # 跳到上面的base函数
    yield from base()
    yield 3

result = func()
for item in result:
    print(item)

 生成器推导式:

v1 = (i for i in range(10)) #生成器推导式,创建了一个生成器,内部循环未执行。
for i in v1:
    print(i)

 

posted @ 2019-10-08 20:04  手可摘星辰。  阅读(138)  评论(0编辑  收藏  举报