Python中yield和return的区别
Python中的yield语句
在Python中,使用yield语句定义生成器。它将普通的Python函数转换为生成器。
yield语句暂停函数的执行,并将返回值传递给函数调用者,然后从离开的地方重新开始执行。yield语句可以被多次调用。而return语句终止函数的执行,并将返回值传递给调用者。没有return语句,函数将不返回任何值。在Python生成器中,yield函数被用来替代return函数,后者将返回值发送给用户而不破坏局部变量。
什么是生成器
Python生成器用作生成迭代器的方法。生成器自动处理这个任务。生成器可以定义为返回一个生成器对象给调用者的特殊函数。
简单说,生成器是指返回一个可以迭代的迭代器的函数。在Python中,很容易创建生成器,它使用yield语句而不是return语句。
示例1:
# Python Code for using yield statement
def myfunction(a, b):
add = a + b
yield add
sub = a - b
yield sub
mul = a * b
yield mul
div = a % b
yield div
# generator runs with for loop for getting all values
for value in myfunction(49,45):
print(value)
输出:
94
4
2205
1.08
示例2:
# Python code for using the yield statement
def printoutput(String) :
for i in String:
if i == "a":
yield i
# string initialization
String = "Tutorial and examples"
ans = 0
print ("The number of 'a' in the string is : ", end = "" )
String = String.strip()
for j in printoutput(String):
ans = ans + 1
print (ans)
输出:
The number of 'a' in the string is : 3
Python Return语句
return语句通常用于结束执行并将值返回给调用者。 return语句可以返回所有类型的值,并且当没有表达式传递给return语句时返回空值。函数中可以有多个return语句,但对于任何特定的函数调用,只有一个语句被调用。
我们可以看到在函数的块末尾放置了一个return语句,用于返回函数内所有语句执行的最终输出。此外,可以在函数块的早期看到return语句,以停止块中所有随后的语句的执行。调用程序的执行会使用return语句快速重新启动。当未指定值时,返回none。
示例1:
# Python code for
#demonstrating use of return statement
def myfunc(a, b):
add = a + b
sub = a - b
mul = a * b
div = a % b
return(add, sub, mul, div)
# Getting return value and printing the output
output = myfunc(49,45)
print("Addition: ", output[0])
print("Subtraction: ", output[0])
print("Multiplication: ", output[0])
print("Division: ", output[0])
输出:
Addition: 94
Subtraction: 4
Multiplication: 2205
Division: 1.08
示例2:
# Python code for
#demonstrating use of return statement
class check:
def __init__(self):
self.str = "Tutorial and examples"
self.x = "Kaushal"
# Object of test will be returned by this function
def fun():
return check()
# Driver code for checking the above method
t = fun()
print(t.str)
print(t.x)
输出:
Tutorial and examples
Kaushal
yield和return语句之间的区别
Yield语句 | Return语句 |
---|---|
Yield返回生成器对象。 | 将结果返回给调用者。 |
可以多次运行。 | 仅运行一次。 |
在yield语句之后的下一次函数调用中可以执行代码。 | 在return语句之后的代码将不会被执行。 |
yield语句可以从之前暂停的地方恢复执行。 | 在return语句中调用的函数只会从头开始运行。 |
yield语句暂停函数并将返回值返回给函数调用者。 | return语句退出执行并将返回值返回给调用者。 |
结论
在上述文章中,我们看到了return和yield语句的区别。同时,我们也理解了这两个语句的概念,并知道如何在我们的Python程序中使用它们。