在 Python 编程中,return 和 yield 是两个重要的关键字,用于从函数中返回值。虽然它们都有返回值的功能,但是它们在用法和场景上有着明显的区别。本文将深入探讨 return 和 yield 关键字的用法及其区别。
return 关键字用于从函数中返回一个值,并结束函数的执行。它适用于普通函数,用于计算并返回一个值。return 可以返回单个值,也可以返回多个值,但只有一个返回值会被执行。下面是一个使用 return 关键字的示例:
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 输出: 8
与return 关键字类似,yield 关键字也表示函数输出。然而,与return 关键字不同的是,yield 关键字用于定义生成器函数,它可以生成一系列的值(即多个输出),并在每次产生值时暂停执行,等待下一次调用(并不会结束函数运行)。yield 适用于需要按需生成大量值或者无限序列的情况,可以节省内存空间。下面是一个使用 yield 关键字的示例:
def generate_numbers():
yield 1
yield 2
yield 3
numbers = generate_numbers()
for num in numbers:
print(num)
# 输出:
# 1
# 2
# 3
“Tips:要查看生成器对象(使用了
yield关键字的对象)的内容,需要对其进行迭代,或者使用next()函数逐个获取值。比如, 上面的输出可以用next()函数实现:
print(next(numbers))
print(next(numbers))
print(next(numbers))
“但是,使用
next()函数时需要注意,如果生成器对象已经产生了所有的值,再次调用next()函数会触发StopIteration异常,因此通常建议在使用next()函数时使用异常处理来避免异常的发生。
try:
while True:
print(next(numbers))
except StopIteration:
print("生成器中的值已经全部获取完毕!")
import numpy as np
numbers = np.random.randint(50, 100, 5)
def return_number(numbers):
# 生成所有数字,然后一次性返回结果
result = []
for number in numbers:
result.append(f'No.{number}')
return result
def yield_number(numbers):
# 生成一个返回一个,重复该过程,直到输出所有数字
for number in numbers:
yield f'No.{number}'
if __name__ == '__main__':
print(f'return keyword: {return_number(numbers)}')
print('yield keyword: ')
for item in yield_number(numbers):
print(item)
return 和 yield 关键字都是 Python 中用于返回值的重要工具,但是它们的用法和场景有着明显的区别。选择使用 return 还是 yield 取决于函数的目的和需求,没有绝对的优劣之分。但是请记住,如果你在处理的数据量大,强烈推荐使用生成器函数(使用 yield 关键字的函数),因为它可以有效节省内存空间,加快处理速度。合理地使用这两个关键字可以使代码更加清晰和高效。
通过本文的介绍,希望读者能够更深入地理解 return 和 yield 关键字的用法,并根据实际情况灵活运用于自己的代码中。
“如果你觉得这篇文章对你有用,请“点赞➕关注”支持我(关注我,不迷路🤭🤭🤭),你的点赞和关注就是我持续创作分享的动力,让更多的朋友发现并加入我们,共同学习和进步!
Thank you for reading!
- END -
推荐阅读👇👇👇
Python小技巧:连接字符串不要再使用+号了,用这个方法更快
Python小技巧:循环不要再使用loc/iloc啦,用这个让你的代码运行速度更快
原文作者:数据派探险家;如有侵权,请联系管理员删除。