当前位置:首页>python>Python中return和yield的区别

Python中return和yield的区别

  • 2026-09-02 19:08:43
Python中return和yield的区别
先用一个表格直接总结Python中return和yield的区别,如下:

特性

return
yield

函数类型

普通函数

生成器函数

状态

函数终止

函数状态被保存

内存

一次性返回所有值

逐个产生值

多次调用

需要重新调用函数

可以从停止处继续

使用场景

单个结果

流式/迭代大数据集

以下详述return和yield的具体使用及区别:
  • return用以结束函数并返回单个值,例如:
def get_numbers():    return [1, 2, 3]  # 返回一个列表    # 函数执行 return 后即结束result = get_numbers()print(result)  # [1, 2, 3]
  • yield用以创建生成器,随时间多次产生值,例如:

def get_numbers():    # 每次 yield 后函数会暂停,下次调用 next() 时继续执行    yield 1    yield 2    yield 3result = get_numbers()  # 返回一个生成器对象print(next(result))  # 1print(next(result))  # 2print(next(result))  # 3

从内存效率的角度而言,取决于我们的使用需求。如地震数据处理时,我们的一个数据集中有很多炮数据,那么使用yield每次返回一炮数据供程序处理执行。而如果是一个很小规模的数据,那么return一次返回全体数据就能够让程序直接处理。

最后用一个小例程展示两种方式的使用并结束本文:

# 使用 return - 一次性加载所有内容到内存def squares_return(n):    return [i**2 for i in range(n)]  # 创建整个列表# 使用 yield - 按需生成def squares_yield(n):    for i in range(n):        yield i**2  # 一次只生成一个值# 使用 yield 可以处理百万级数据而不会有内存问题for square in squares_yield(1000000):    # 逐个处理平方值    print(f"The current value to be processed is {square}")

最新文章

随机文章