Python中return与yield有何不同?生成器优势详解?

2026-05-24 17:460阅读0评论SEO问题
  • 内容介绍
  • 相关推荐

本文共计4170个文字,预计阅读时间需要17分钟。

Python中return与yield有何不同?生成器优势详解?

前语:return 语句在函数中使用,用于返回某个值。函数返回值后,不再继续执行,程序结束。yield:带有yield的函数是一个生成器,函数返回某个值时,会暂停执行,并返回该值。函数返回值后,会继续执行,直到下一个yield语句。

前言

return:在程序函数中返回某个值,返回之后函数不在继续执行,彻底结束。

yield: 带有yield的函数是一个生成器,函数返回某个值时,会停留在某个位置,返回函数值后,会在前面停留的位置继续执行,直到程序结束。

简单理解:yield就是return返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后开始。

普通函数和生成器函数

假如要创建一个返回奇数数列的函数,普通函数的做法如下:

def odd_numbers(n):
odd_num_list = []
for i in range(n):
if (i % 2) == 1:
odd_num_list.append(i)

return odd_num_list


for j in odd_numbers(10):
print(j)

运行结果:

1
3
5
7
9

当将上述函数改成如下形式时,普通函数便变成了一个生成器函数。这时候调用odd_numbers(10)不会执行odd_numbers函数,而是返回一个生成器对象。

阅读全文

本文共计4170个文字,预计阅读时间需要17分钟。

Python中return与yield有何不同?生成器优势详解?

前语:return 语句在函数中使用,用于返回某个值。函数返回值后,不再继续执行,程序结束。yield:带有yield的函数是一个生成器,函数返回某个值时,会暂停执行,并返回该值。函数返回值后,会继续执行,直到下一个yield语句。

前言

return:在程序函数中返回某个值,返回之后函数不在继续执行,彻底结束。

yield: 带有yield的函数是一个生成器,函数返回某个值时,会停留在某个位置,返回函数值后,会在前面停留的位置继续执行,直到程序结束。

简单理解:yield就是return返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后开始。

普通函数和生成器函数

假如要创建一个返回奇数数列的函数,普通函数的做法如下:

def odd_numbers(n):
odd_num_list = []
for i in range(n):
if (i % 2) == 1:
odd_num_list.append(i)

return odd_num_list


for j in odd_numbers(10):
print(j)

运行结果:

1
3
5
7
9

当将上述函数改成如下形式时,普通函数便变成了一个生成器函数。这时候调用odd_numbers(10)不会执行odd_numbers函数,而是返回一个生成器对象。

阅读全文