Python中return与yield有何不同?生成器优势详解?
- 内容介绍
- 相关推荐
本文共计4170个文字,预计阅读时间需要17分钟。
前语: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)
运行结果:
13
5
7
9
当将上述函数改成如下形式时,普通函数便变成了一个生成器函数。这时候调用odd_numbers(10)不会执行odd_numbers函数,而是返回一个生成器对象。
本文共计4170个文字,预计阅读时间需要17分钟。
前语: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)
运行结果:
13
5
7
9
当将上述函数改成如下形式时,普通函数便变成了一个生成器函数。这时候调用odd_numbers(10)不会执行odd_numbers函数,而是返回一个生成器对象。

