Python yield和return的区别

Python yield和return的区别

在Python中,使用 yield 语句来定义 生成器 。因此,在我们深入了解 yield 的具体功能之前,你需要先概览一下 生成器 。如果你熟悉Python,那么你很可能之前已经用过Python生成器。生成器在Python中起着重要的作用。Python中可以使用生成器生成迭代器,但这个过程有所不同。

Python生成器是可以动态暂停和恢复的函数,并生成一系列的结果。它们也可以用来生成随机数。在Python 2.2中,生成器首次作为一种可选特性引入。在Python 2.3中,它们变成了强制性特性。尽管Python 2.5中的生成器函数已经非常强大了,但它们仍然得到了很大的改进。

为了保持向后兼容性,在Python 2.2中引入生成器的同时引入了一个新的关键字 “yield” 。为了使用生成器,我们需要从 future 模块中导入它们。当生成器成为Python 2.3版本的默认内容时,这一点发生了变化,不再需要导入。

yield 语句可以暂时中断函数的执行,并将一个值返回给调用者,同时保存函数的状态以便稍后恢复。这意味着在获得返回值后,整个生成器仍然可以重新启动。函数的执行用返回语句终止,同时也将一个值返回给调用该函数的人。如果函数没有返回任何值,它将不会返回任何内容。

Python中的yield是什么

在Python生成器中, yield 语句取代了函数的 return ,以便将一个值返回给调用生成器的人,而不会删除任何局部变量。为了更好地理解 yield 语句在Python编程中的功能,你首先需要熟悉 生成器

生成器函数和普通函数的区别在于生成器函数在其定义中具有一个 yield 语句。它以 yield 关键字开头,标识要返回给调用此函数的生成器对象。

在Python中,一种特殊类型的函数称为 生成器 ,它不是向调用函数的人返回数据值,而是返回另一个生成器对象。由于 yield 关键字,函数的执行可以暂时中断,状态可以被保存,并可以在以后的时间恢复执行。

示例

请看以下示例:

# Use of yield
def printresult(String): 
   for i in String: 
      if i == "p": 
         yield i 

# Initializing string 
String = "Happy Birthday" 
ans = 0
print ("The number of 'p' in word is: ", end = "" ) 
String = String.strip() 

for j in printresult(String): 
   ans = ans + 1

print (ans)

输出

The number of 'p' in word is: 2

Python Return是什么?

yield 语句相反, return 语句会导致函数终止,并将一个值传递回调用它的函数。那些具有更多过程性特点的函数不会显式地将任何值返回给调用者,而是返回一个发送回调用函数的值。尽管一个函数可以有多个return语句,但对于每个语句的调用,只能调用其中一个。

几乎总是在一个函数块的最后放置一个 return 语句,其目的是返回执行该函数内包含的所有语句所产生的最终结果。但是, return 语句也可以在函数块中较早地出现,以停止该块中所有后续语句的执行。如果要使用它来停止函数的执行,那么情况就是如此。这将导致在调用者处重新启动程序的执行。当 return 对象没有提供值时,Python中的”None”返回对象类型是等效的。

示例

以下示例演示了在Python中使用 return 的用法-

# Show return statement 
class Test:  
   def __init__(self):  
      self.str = "Happy Birthday"
      self.x = "Pradeep"

# This function returns an object of Test  
def fun():  
   return Test()  
# Driver code to test above method  
t = fun()   
print(t.str)  
print(t.x) 

输出

Happy Birthday
Pradeep

在Python中yield和return的区别

下表突出了yield和return在Python中的主要区别-

比较基础 yield return
基础知识 在大多数情况下,您需要使用yield函数将典型的Python函数转换为生成器。 在大多数情况下,执行结束时使用return关键字标志,并将结果“返回”给调用它的语句。
函数 它代替函数的返回,以便暂停函数的执行而不丢失任何局部变量。 它退出一个函数并将一个值返回给它的调用者。
用途 当生成器给调用者提供一个中间结果时,调用者将使用该函数。 当函数准备传递一个值时,必须使用这个。
执行 yield语句后面的代码将在下一次函数调用时执行。 而return语句后面的代码将不会执行。
编译 它有能力多次运行。 它一次只能运行一次。

结论

yield语句产生一个生成器对象,并且可以在不终止程序的情况下向调用者返回多个值,而return语句用于在函数内部向调用者返回一个值,并终止程序。return语句用于从函数内部向调用者返回值。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程