在Python中,return
和yield
都可以用于函数中返回值,但它们之间有很大的区别。
return
语句用于从函数中返回值并终止函数的执行。当函数执行到return
语句时,它会立即停止并返回一个值。在函数中,return
语句可以出现多次,但只有第一次出现时才会返回值。如果没有指定返回值,则默认返回None
。
yield
语句用于定义生成器函数。生成器函数是一种特殊的函数,它可以暂停执行并返回一个中间结果,然后在需要时恢复执行。当函数执行到yield
语句时,它会返回一个值并暂停执行,等待下一次调用继续执行。在函数中,yield
语句可以出现多次,每次返回一个值。生成器函数可以用于迭代器,可以通过for
循环或next()
函数来逐个获取生成器函数返回的值。
因此,return
和yield
的主要区别在于:return
语句用于从函数中返回值并终止函数的执行,而yield
语句用于定义生成器函数,可以暂停执行并返回一个中间结果。
下面是一个简单的例子,演示了return
和yield
的区别:
# return语句的例子
def func_return():
print("start")
return 1
print("end") # 这行代码不会执行
result = func_return()
print(result) # 输出:1
# yield语句的例子
def func_yield():
print("start")
yield 1
print("middle")
yield 2
print("end")
gen = func_yield()
print(next(gen)) # 输出:1
print(next(gen)) # 输出:2