yang-shuo

导航

 

yield关键字

yield的作用是返回一个可以用来迭代的生成器

生成器函数和生成器

生成器函数是一种特殊的函数,它的函数内部含有yield表达式,调用它会返回一个特殊的迭代器,称生成器

def func1():
    return 1
 
def func2():
    yield 1
 
print(type(func1))   # <class 'function'>
print(type(func2))    # <class 'function'>
 
print(type(func1())) # <class 'int'>
print(type(func2()))  # <class 'generator'>
yield表达式

如果一个函数定义中包含 yield 表达式,那么该函数是一个生成器函数(而非普通函数)。实际上,yield 仅能用于定义生成器函数。

与普通函数不同,生成器函数被调用后,其函数体内的代码并不会立即执行,而是返回一个生成器(generator-iterator)。当返回的生成器调用成员方法时,相应的生成器函数中的代码才会执行。

def square():
    for x in range(4):
        yield x ** 2
square_gen = square()
for x in square_gen:
    print(x)

for 循环会调用 iter() 函数,获取一个生成器;而后调用 next() 函数,将生成器中的下一个值赋值给 x;再执行循环体

posted on 2024-06-15 16:01  每天都在写bug  阅读(15)  评论(0)    收藏  举报