yield语句用于在Python中定义生成器。因此,在深入研究确切的产量之前,我们必须首先了解发电机的概念。生成器在Python中起着重要作用,如果您精通Python编程,那么您很可能已经在使用Python生成器。生成器用于在Python中创建迭代器,但方法不同。
Python生成器是产生一系列结果的函数,可以动态地暂停和恢复。生成器最初是在Python 2.2中作为可选功能添加的,并在Python 2.3中成为标准配置。尽管它们足够强大,但生成器功能在Python 2.5中得到了显着增强。
在Python 2.2中重新添加了生成器后,它引入了新关键字“yield”以实现向后兼容,为此,需要从_future_
模块导入生成器以使用它们。当生成器成为标准的并且不再需要时,在Python 2.3版中对此进行了更改。
yield语句将中止函数的执行,并将值发送回调用方,同时保存状态并随后恢复,这意味着在获得返回值之后,仍可以恢复整个生成器本身。return语句结束函数的执行,并将值发送回调用方。没有它,函数将不会返回任何内容。让我们来看看何时在Python中使用yield和何时使用return来更好地了解两者的区别。
什么是Python yield?
yield语句在Python生成器中用于替换函数的返回,以将值发送回其调用方而不会破坏局部变量。为了更好地了解yield语句在Python编程中的作用,必须了解什么是生成器。
生成器函数通过定义产生,就像常规函数一样,但是包含“yield”语句。这从关键字“yield”开始,该关键字指定要返回给调用方的生成器对象。生成器是Python中的一个特殊功能,它将生成器对象而不是数据值返回给调用者。yield关键字具有独特的功能,可以停止执行该函数,保存状态并在以后恢复。
什么是Python Return?
与yield语句不同,return语句从函数退出,将值交还给其调用者。函数将值返回给其调用者,而本质上更具过程性的函数根本不会显式返回任何内容。虽然一个函数可以有多个return语句,但是对于该函数的任何给定调用只能调用其中一个。
通常,return语句出现在功能块的最后,以返回执行该函数中包含的所有语句的最终结果。但是,它也可能出现在功能块的前面,以停止该块中所有后续语句的执行。这将立即在调用者处恢复程序的执行。如果未指定任何值,则Python中的等效返回对象类型为“None”。
Python yield和Python return的区别
Python yield和Python return基础知识
yield语句在Python生成器中用于替换函数的返回,以将值发送回其调用方而不会破坏局部变量。生成器是Python中的一个特殊功能,它将生成器对象而不是数据值返回给调用者。
与yield语句不同,return语句从函数退出,将值交还给其调用者。通常,return语句出现在功能块的最后,以返回执行该函数中包含的所有语句的最终结果。所有函数都返回一个值,如果未指定任何值,它将返回“None”。Python yield和Python return的生成器与函数
yield语句明确地与Python生成器一起使用。从语法上讲,生成器是具有yield语句的函数。虽然一个函数可以有多个return语句,但是对于该函数的任何给定调用只能调用其中一个。
与仅返回一次的函数不同,生成器可以暂停执行并产生中间结果。每个生成器都定义为一个函数,但是在功能块内部使用yield关键字代替return关键字,以指示返回值只是临时的,即使获得返回值也可以恢复整个生成器。Python yield和Python return执行
return语句终止函数的执行并将一个值发送回其调用者。函数将值返回给其调用者,而本质上更具过程性的函数根本不会显式返回任何内容。基本上要做的是从函数中退出并销毁其中的所有局部值。
另一方面,yield语句替换函数的返回值以挂起其执行,并在不破坏局部变量的情况下将值发送回其调用方。但是,与return函数不同,yield会从中断处恢复执行该函数。
总结
从语法上讲,yield是可以与return关键字一样使用的关键字,除了return语句终止函数的执行并将值发送回其调用方。 return语句的功能是获取输入并将某些内容返回给调用方。 与return不同,yield语句用于显式定义生成器,替换函数的返回值以暂停执行,从而保持局部变量不变,而return语句破坏其中的所有局部变量。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:Python yield和Python return
本文链接:https://www.vsdiffer.com/vs/python-yield-vs-python-return.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。