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 : 3Python 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
Kaushalyield和return语句之间的区别
| Yield语句 | Return语句 | 
|---|---|
| Yield返回生成器对象。 | 返回结果给调用者。 | 
| 可以多次运行。 | 仅运行一次。 | 
| 可以在yield语句之后的下一个函数调用中执行代码。 | 在return语句之后不会执行代码。 | 
| 该语句可以从暂停或离开的地方继续。 | 该语句只运行函数从头开始的函数调用。 | 
| yield语句挂起函数并将值返回给函数调用者。 | return语句从执行中退出并将值返回给调用者。 | 
结论
在上述文章中,我们看到了return和yield语句的区别。此外,我们了解了这两种语句的概念,以及如何在Python程序中使用它们。
 
          
          
         