Python中Yield和Return的区别?
什么是Yield和Return?
在Python中,Yield和Return都是函数的关键字,用于函数返回值的生成。Yield关键字可以让一个普通函数变成生成器(generator)函数,而Return关键字则是普通函数的返回值。
Yield和Return的区别
Yield用于生成器函数中,表示将一个返回值生成为一个序列,可以是列表、元组或者是字符串等。
Return用于普通函数中,表示函数执行完毕,返回一个值或者None。
简言之,Yield是生成器函数中的关键字,用于生成一个序列并将其返回,而Return则是普通函数中的关键字,表示函数执行完毕并且返回一个值。
Yield和Return的示例代码
# 生成器函数示例代码
def fibonacci(n):
a, b = 0, 1
while a < n:
yield a
a, b = b, a+b
# 调用生成器函数并输出结果
for i in fibonacci(50):
print(i,end= " ")
代码解释:这是一个生成斐波那契数列的函数,通过Yield关键字将计算结果返回并生成序列,最后通过for循环输出结果。
# 普通函数示例代码
def add_num(num1,num2):
result = num1 + num2
return result
# 调用函数并输出结果
print(add_num(3,5))
代码解释:这是一个加法函数,通过Return关键字返回计算结果并输出。
Yield和Return的相似之处
当函数中出现Yield关键字时,函数会被自动转换为生成器对象,可以使用next()函数逐个输出生成器的值,而Return则是直接返回一个值或者None,这一点和生成器函数都不同。
生成器函数和普通函数都可以传递参数,区别在于生成器函数中传递参数之后不会立即执行,如果要执行需要使用next()或者for循环来输出结果。普通函数则是在传递参数后立即执行并返回结果。
以上是Yield和Return的区别与相似之处,需要注意的是,在使用Yield关键字时,函数并不会完全执行完毕,而是在每次调用next()函数时从上次离开的地方继续执行,直到执行完毕。
结论
Yield和Return虽然都是Python函数中的关键字,但是它们的作用完全不同。Yield用于将计算结果生成为一个序列,而Return则是直接返回一个值。在使用Yield时,可以将一个普通函数变为生成器函数,使用next()或者for循环输出返回值。在使用Return时则不需要考虑这些问题,直接返回即可。