Python教程-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):
aadd = 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 = "" )
StringString = String.strip()
for j in printoutput(String):
ansans = ans + 1
print (ans)
输出:
The number of 'a' in the string is : 3
Python Return语句
return语句通常用于结束执行并将值返回给调用者。return语句可以返回所有类型的值,当没有表达式传递给return语句时,它将返回None。函数中可以有多个return语句,但对于函数的任何特定调用,只会调用一个语句。
可以看到,在函数块的末尾放置了return语句,以返回函数内所有语句的执行的最终输出。还可以看到,在函数块中较早的位置放置了return语句,以停止函数内所有后续语句的执行。在调用者处,使用return语句可以快速重新启动程序的执行。如果没有指定值,它将返回None。
示例1:
# Python code for
#demonstrating use of return statement
def myfunc(a, b):
aadd = 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语句从执行中退出并将值返回给调用者。 |
结论
在上述文章中,我们看到了return和yield语句的区别。此外,我们了解了这两种语句的概念,以及如何在Python程序中使用它们。