Python中yield和return的区别

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程序中使用它们。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程