return 和 yield 是 Python 中用于函数返回值的关键字,但它们的行为和用途有显著区别。
1. return
- 作用:
return用于从函数中返回一个值,并终止函数的执行。 - 特点:
- 函数执行到
return语句时,会立即退出,并将return后面的值作为函数的返回值。 - 函数调用结束后,局部变量会被销毁。
- 每次调用函数时,都会从头开始执行。
- 函数执行到
示例:
def simple_function():
return 1
return 2 # 这行不会执行
result = simple_function()
print(result) # 输出: 1
2. yield
- 作用:
yield用于生成器函数中,生成一个值并暂停函数的执行,保留函数的状态,下次调用时从暂停处继续执行。 - 特点:
- 使用
yield的函数称为生成器函数,调用时返回一个生成器对象。 - 生成器函数执行到
yield时,会返回yield后面的值,并暂停执行,保留局部变量的状态。 - 下次调用生成器的
__next__()方法时,函数会从上次暂停的地方继续执行。 - 生成器函数可以多次
yield值,直到函数结束或遇到return。
- 使用
示例:
def generator_function():
yield 1
yield 2
yield 3
gen = generator_function()
print(next(gen)) # 输出: 1
print(next(gen)) # 输出: 2
print(next(gen)) # 输出: 3
3. 主要区别
| 特性 | return |
yield |
|---|---|---|
| 返回值 | 返回一个值并终止函数 | 生成一个值并暂停函数 |
| 函数状态 | 函数执行结束,局部变量销毁 | 函数状态保留,下次继续执行 |
| 调用方式 | 直接调用函数 | 通过生成器对象调用 __next__() |
| 适用场景 | 普通函数 | 生成器函数,用于迭代或延迟计算 |
4. 总结
return用于普通函数,返回一个值并结束函数执行。yield用于生成器函数,生成一个值并暂停函数,保留状态以便下次继续执行。
根据具体需求选择使用 return 或 yield。
浙公网安备 33010602011771号