【Python 3】什么时候使用yield而不是return?

简介: 本文讨论了Python中`yield`与`return`的使用场景,解释了`yield`在生成器中的应用,允许函数逐步产生值而不必一次性计算并返回整个序列,适合于节省内存的懒加载场景。

1 分析

(1)yield语句将中止函数的执行并将一个值发送回调用方,但保留足够的状态以使函数可以在中断的地方继续执行。恢复后,该函数将在最后一次运行后立即继续执行。这使它的代码可以随着时间的推移产生一系列值,而不是立即计算它们并像列表一样将它们发送回去。

(2)yield在Python生成器中使用。生成器函数的定义类似于普通函数,但是每当需要生成一个值时,它都使用yield关键字而不是return来这样做。如果def的主体包含yield,该函数将自动成为生成器函数。
(3)Return将指定的值发送回其调用方,而Yield可以产生一系列值。当我们要遍历一个序列,但又不想将整个序列存储在内存中时,应该使用yield。

2 举例

def simpleGeneratorFun(): 
    yield 1
    yield 2
    yield 3

# Driver code to check above generator function 
for value in simpleGeneratorFun():  
    print(value)

输出:

1
2
3

目录
相关文章
|
15天前
|
存储 Python
Python中的yield到底是个什么鬼?
Python中的yield到底是个什么鬼?
Python中的yield到底是个什么鬼?
|
2月前
|
存储 大数据 Python
Python中的yield关键字是什么?
`yield`是Python的关键字,用于创建生成器,实现懒惰计算。生成器函数在遇到`yield`时暂停并返回值,状态得以保留,下次迭代时从中断点继续。生成器是迭代器的一种,常用于处理大数据集或无限序列,避免一次性加载所有数据。例如,`simple_generator`函数通过`yield`逐次返回1, 2, 3。生成器函数如`fibonacci_generator`可用于生成斐波那契数列,而生成器表达式则提供了一种简洁的生成值方式,如`(x**2 for x in range(1, 6))`生成平方数。`yield`还可用于创建无限序列、过滤值(如只生成偶数)和实现懒惰计算
|
3月前
|
Shell Python
Python教程:return和yield的区别
Python教程:return和yield的区别
30 0
Python教程:return和yield的区别
|
3月前
|
Python
Python yield与实现教程分享
Python yield与实现教程分享
23 0
|
3月前
|
Python 微服务
python yield generator 详细讲解
python yield generator 详细讲解
25 0
|
4月前
|
开发工具 Python
Python中return和yield的区别,面试官不讲武德
Python中return和yield的区别,面试官不讲武德
|
4月前
|
Python
Python yield 关键字的作用?
Python yield 关键字的作用?
36 0
|
4月前
|
大数据 Python
Python中的`yield`:掌握生成器的精髓
【4月更文挑战第17天】`yield`在Python中用于创建生成器,一种节约内存的迭代器。生成器函数在迭代时暂停并保存状态,下次迭代时继续执行,适用于处理大数据、实现协程和优化内存。`yield`不同于普通函数,不立即计算所有结果,而是在需要时生成单个值。使用场景包括生成大列表、实现协程和简化迭代逻辑。注意`yield`后的值不能是表达式,生成器只能调用一次,且`yield`与`return`作用不同。理解并善用`yield`能提升Python编程效率。
|
9月前
|
存储 Python
PYTHON知识点学习-函数调用中return&print
PYTHON知识点学习-函数调用中return&print
60 0
|
10月前
|
Python
python 递归 return None
python 递归 return None
27 0