`
Ydoing
  • 浏览: 106198 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

python生成器

 
阅读更多

什么是 python 式的生成器?从句法上讲,生成器是一个带 yield 语句的函数。一个函数或者子
程序只返回一次,但一个生成器能暂停执行并返回一个中间的结果—-那就是 yield 语句的功能,返
回一个值给调用者并暂停执行。当生成器的 next()方法被调用的时候,它会准确地从离开地方继续
(当它返回[一个值以及]控制给调用者时)

简单实例

def gen():
    yield 1
    yield 2
    yield 3

f = gen()
print f.next()
print f.next()
print f.next()

输出结果

1
2
3

从结果我们可以看出每次调用函数对象的next方法时,总是从上次离开的地方继续执行的.

加强的生成器

在 python2.5 中,一些加强特性加入到生成器中,所以除了 next()来获得下个生成的值,用户
可以将值回送给生成器[send()],在生成器中抛出异常,以及要求生成器退出[close()]

def gen(x):
    count = x
    while True:
        val = (yield count) 
        if val is not None:
            count = val
        else:
            count += 1

f = gen(5)
print f.next()
print f.next()
print f.next()
print '===================='
print f.send(9)#发送数字9给生成器
print f.next()
print f.next()

输出

5
6
7
====================
9
10
11
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    Python生成器共7页.pdf.zip

    Python生成器是Python编程语言中的一个强大特性,它允许开发者创建迭代器,而无需显式地定义`__iter__`和`__next__`方法。生成器在内存管理上非常高效,因为它们按需生成值,而不是一次性生成所有数据。这在处理大量...

    Python生成器定义与简单用法实例分析

    总结来说,Python生成器是一种高效的编程工具,它使得程序能够有效地处理大量数据,而不需要占用过多的内存资源。通过生成器,我们可以构建出无限的迭代器,或者通过惰性求值逐个产生数据,从而节省内存并提高程序的...

    python 生成器 & 迭代器.pdf

    Python 生成器和迭代器 Python 生成器和迭代器是 Python 编程语言中两个重要的概念,它们都是用于处理可迭代对象的。下面我们将对这两个概念进行详细的解释和分析。 一、什么是生成器? 在 Python 中,使用了 ...

    python生成器使用笔记.doc

    python生成器使用笔记

    Python生成器和迭代器.docx

    Python生成器和迭代器

    Python生成器表达式

    Python生成器表达式是Python编程语言中的一种高效内存管理机制,它允许程序员创建迭代器而无需定义一个完整的类。生成器表达式与列表推导式非常相似,但在内存使用和性能方面有着显著的区别。列表推导式一次性计算并...

    python生成器用法实例详解

    Python生成器是一种特殊的迭代器,它们允许我们定义一个可以暂停执行并保留其内部状态的函数。在需要时,生成器可以恢复执行并产生序列中的下一个值。生成器简化了迭代器的实现,避免了手动管理迭代状态的复杂性。 ...

    Python生成器(Generator)详解

    Python生成器,或称Generator,是一种特殊的迭代器,它的特点是其内部使用了`yield`语句,这使得生成器能够记住执行状态,并在下次调用时恢复。生成器的优势在于它们能够在运行时按需生成数据,而不是一次性生成所有...

    Python生成器深度指南:高效迭代与懒加载技巧

    在Python编程中,生成器是一种高效处理迭代数据的机制。与传统的迭代器不同,生成器使用yield关键字来产生值,而不是一次性生成所有值。这种“懒加载”的方式可以显著减少内存使用,特别是在处理大型数据集或无限...

    Python生成器的使用方法和示例代码

    ### Python生成器的使用方法与示例代码详解 #### 一、引言 在Python编程中,生成器是一种特殊的迭代器,它允许我们创建一种能够动态生成数据的函数。相比于传统的返回列表的方法,生成器更加高效,因为它并不一次...

    Python生成器以及应用实例解析

    Python生成器是编程中一种非常高效且节省内存的工具,特别是在处理大数据集或者无限序列时。它们遵循Python的迭代器协议,允许你在需要时按需生成下一个值,而不是一次性加载整个序列到内存中。生成器有两种主要形式...

    python生成器和迭代器区别

    在Python编程语言中,生成器(Generator)和迭代器(Iterator)是两种非常重要的概念,它们主要用于处理大量数据或无限序列,以节省内存资源。理解它们的区别和使用方式对于高效编程至关重要。 一、生成器 1.1 ...

    python生成器(创建生成器,执行顺序,send方法)

    Python 生成器是一种特殊的迭代器,它允许在执行过程中暂停并保存状态,使得函数能够从上次停止的地方继续执行。这种特性使得生成器在处理大量数据或者无限序列时非常高效,因为它不需要一次性生成所有元素,而是按...

    彻底搞懂Python生成器推导式

    Python生成器推导式: 生成器推导式(generator expression)的用法与列表推导式非常相似,在形式上生成器推导式使用圆括号(parentheses)作为定界符,而不是列表推导式所使用的方括号(square brackets)。 与列表...

    Python生成器next方法和send方法区别详解

    本篇文章将深入探讨Python生成器中的`next()`方法和`send()`方法,以及它们之间的区别。 首先,让我们理解`next()`方法。`next()`方法用于迭代生成器,当调用`next(g)`时,它会执行生成器函数直到遇到第一个`yield`...

    Python生成器函数

    生成器本质上也是一个迭代器,我的一点理解的话,它也有点像只能执行一轮的单链表,通过 obj.__next__()就获得了当前指针(并不是真的指针)的指向值,同时将将指针指向一下个,过程不可逆,最后一个元素执行完之后...

    简单了解Python生成器是什么

    生成器是 Python 初级开发者最难理解的概念之一,虽被认为是 Python 编程中的高级技能,但在各种项目中可以随处见到生成器的身影,你得不得去理解它、使用它、甚至爱上它。 提到生成器,总不可避免地要把迭代器拉...

Global site tag (gtag.js) - Google Analytics