Python中生成器是如何实现长尾函数调用的原理?

2026-04-11 08:230阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2260个文字,预计阅读时间需要10分钟。

Python中生成器是如何实现长尾函数调用的原理?

生成器的使用+在+Python+中,如果一个函数定义内部使用了+yield+关键字,那么在执行函数的时候返回的是一个生成器,而不是常规函数的返回值。我们先来看一个常规函数的定义:++下+。

生成器的使用

在 Python 中,如果一个函数定义的内部使用了 yield 关键字,那么在执行函数的时候返回的是一个生成器,而不是常规函数的返回值。

我们先来看一个常规函数的定义,下面的函数 f() 通过 return 语句返回 1,那么 print 打印的就是数字 1。

def f(): return 1 print(f())

如果我们将上面的 return 改成 yield,也就是下面这样

def f(): yield 1 yield 2 g = f() print(g) print(next(g)) print(next(g)) print(next(g))

最终的输出如下,调用函数 f() 得到的是一个生成器(generator)对象 g,通过 Python 内置的 next() 函数可以驱动生成器往下执行,每调用一次 next() 函数,生成器就会执行到下一个 yield 语句处,并将 yield 语句中的表达式返回,当没有更多 yield 语句时继续执行 next() 函数会触发 StopIteration 异常。

阅读全文
标签:使用

本文共计2260个文字,预计阅读时间需要10分钟。

Python中生成器是如何实现长尾函数调用的原理?

生成器的使用+在+Python+中,如果一个函数定义内部使用了+yield+关键字,那么在执行函数的时候返回的是一个生成器,而不是常规函数的返回值。我们先来看一个常规函数的定义:++下+。

生成器的使用

在 Python 中,如果一个函数定义的内部使用了 yield 关键字,那么在执行函数的时候返回的是一个生成器,而不是常规函数的返回值。

我们先来看一个常规函数的定义,下面的函数 f() 通过 return 语句返回 1,那么 print 打印的就是数字 1。

def f(): return 1 print(f())

如果我们将上面的 return 改成 yield,也就是下面这样

def f(): yield 1 yield 2 g = f() print(g) print(next(g)) print(next(g)) print(next(g))

最终的输出如下,调用函数 f() 得到的是一个生成器(generator)对象 g,通过 Python 内置的 next() 函数可以驱动生成器往下执行,每调用一次 next() 函数,生成器就会执行到下一个 yield 语句处,并将 yield 语句中的表达式返回,当没有更多 yield 语句时继续执行 next() 函数会触发 StopIteration 异常。

阅读全文
标签:使用