在 Python 中,yield 和 return 都用于函数的返回值,但它们之间有一些重要的区别。
相同点:
两者都用于从函数中返回值。
在执行到 yield 或 return 语句后,函数会立即结束。
不同点:
return 语句用于在函数中直接返回一个值,并且终止函数的执行。当函数执行到 return 语句时,会将值返回给调用方,并且不再执行函数中的其他语句。
yield 语句用于生成器函数中,它将函数变为一个迭代器,并且可以通过多次调用来依次产生值。每次调用 yield 语句时,函数会暂停执行并返回一个值给调用方,但是函数的状态会被保留,下次调用时会从上次暂停的地方继续执行。
下面是一个示例代码来说明它们的使用:
def simple_generator():
yield 1
yield 2
yield 3
def simple_function():
return 1
# 使用yield的生成器函数
gen = simple_generator()
print(next(gen)) # 输出: 1
print(next(gen)) # 输出: 2
# 使用return的普通函数
result = simple_function()
print(result) # 输出: 1
在上述示例中,simple_generator 是一个生成器函数,通过使用 yield 关键字,它可以暂停执行并返回多个值。而 simple_function 是一个普通函数,使用 return 直接返回一个值。
P.S. yield 将函数转换为一个生成器对象,而生成器对象是迭代器的一种特殊类型。迭代器是一种可以逐个返回值的对象,它具有 __ next__() 方法,可以使用 next() 函数来逐个获取它的值。