`
cloudhe
  • 浏览: 109015 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Amazing Python 1: "yield"

阅读更多

"yield" is used for Generater (below 2.2) or seperately (2.2 or above) in Python.


"yield" mainly works as "return", but it makes a function able to have multiple return values step by step .

All return values will comprise a sequence which can be used in "for" or more amazingly as a "link" by running "link.next()"!

 

Example 1:

def generater():
    yield 1
    yield 2
    yield 3
    
for i in generater():
    print i,
print "\n"

print "getnerater() =", generater() 
print "list(generater()) =", list(generater())
print

link = generater()
print "link.next() =", link.next()
print "link.next() =", link.next()
print "link.next() =", link.next()

Output:

1 2 3 

getnerater() = <generator object at 0xb7dafb0c>
list(generater()) = [1, 2, 3]

link.next() = 1
link.next() = 2
link.next() = 3


Example2, calculating fibonacci(20):

(from speech "Object-oriented design with Python" by Bruce Eckel, 2005, http://us.pycon.org/talks/2005/wed/track1/44/talkDetails )

def fibonacci(count):
    def fib(n):
        if n < 2: return 1
        return fib(n-2) + fib(n-1)
    n = 0
    while n < count:
        yield fib(n)
        n += 1

for f in fibonacci(20): # Automatically iterable
    print f,

Output:

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 

 

Example3, let's forget about recursion!

(from "Dive into Python, e.g. 17.19")

def fibonacci(n):
    a, b = 1, 1
    for i in range(n):
        yield a 
        a, b = b, a+b

for f in fibonacci(20):
    print f,

Output:

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 

 

分享到:
评论

相关推荐

    Python 基础:入门必备.txt

    - `except`, `lambda`, `yield` #### 三、引号 Python支持三种类型的引号: - 单引号 (`'`): `'Hello'` - 双引号 (`"`): `"World"` - 三引号 (`'''` 或 `"""`): 用于多行字符串 ```python ''' 这是一个 多行...

    python中的yield使用方法

    今天在看其他同事的代码时,发现一个没使用过的python关键字 :yield  先问了一下同事,听他说了几句,有个模糊的印象,仅仅是模糊而已。于是自己去搜搜资料看。看了半天,逐渐清晰了。不过在工作机制以及应用上...

    Python技法:用re模块实现简易tokenizer.doc

    yield Token(m.lastgroup, m.group()) # 示例 text = 'foo = 12 + 5 * 6' for tok in generate_tokens(master_pat, text): print(tok) ``` 这个简单的tokenizer将输入的表达式字符串`'foo = 12 + 5 * 6'`分解为...

    Python中的yield关键字做了什么.pdf

    在Python编程语言中,`yield`关键字扮演着非常特殊的角色,它是生成器(generators)的核心组成部分。生成器是Python中一种高效的迭代器实现方式,它们允许开发者在内存中逐个产生值,而不是一次性生成所有值,从而...

    Python中的yield关键字做了什么.docx

    在Python编程语言中,`yield`关键字是一个非常重要的特性,它与生成器(generators)紧密相关,而生成器又是一种特殊的迭代器(iterables)。理解`yield`的工作原理对于高效地处理大量数据和节省内存资源至关重要。 ...

    Python库 | ffmpeg_progress_yield-0.1.2-py2.py3-none-any.whl

    1. **进度反馈**:`ffmpeg_progress_yield`可能提供一种机制,让用户在处理大文件时获取实时的处理进度。这对于长时间运行的转换任务来说尤其有用,因为用户可以知道任务何时完成,或者在必要时中断进程。 2. **...

    python异步编程 使用yield from过程解析

    `yield from`语句是Python 3.3引入的新特性,它在异步编程中扮演着重要角色,主要用于简化生成器(generator)的使用,尤其是处理嵌套生成器的情况。 首先,让我们理解`yield from`的基本作用。在Python中,生成器...

    初步解析Python中的yield函数的用法

    在Python中,`yield`函数是生成器(generator)的核心组成部分,它允许函数成为一个可迭代的对象,而不是一次性返回所有结果。生成器是一种特殊的迭代器,它们不会立即计算所有的值,而是根据需要在运行时逐个生成。...

    Python:Python高级特性:装饰器与迭代器

    - 或者使用生成器函数,通过`yield`关键字自动创建迭代器。 **迭代器的使用:** - 可以使用`for`循环遍历迭代器。 - 或者手动调用`next()`函数获取下一个元素。 **迭代器的好处:** - 提供了延迟加载的能力,即按...

    python-yield用法详解.pdf

    # Python中的`yield`用法详解 ## 一、引言 在Python编程语言中,`yield`关键字是一个非常强大的特性,它使我们能够轻松地创建生成器(generators)。生成器是一种特殊的迭代器,可以让你在一个函数执行过程中保存...

    基础算法-python打印杨辉三角

    python打印杨辉三角 # 方法一 def fab(max): n, a, b =0, 0, 1 while n &lt; max: yield b #使用yield a, b =b, a + b n = n + 1 N = int (input("请输入生成行数N: ")) def yanghui_triangles(): a = [1] ...

    python中yield的用法.docx

    Python中的`yield`关键字是其语法的一大特色,它在生成器(Generator)中扮演着核心角色。生成器是一种特殊的迭代器,它允许我们定义一个函数,该函数可以在执行过程中暂停并保存状态,以便下次调用时能从暂停的地方...

    详解Python3中yield生成器的用法

    n -= 1   另外一种说法:生成器就是一个返回迭代器的函数,与普通函数的区别是生成器包含yield语句,更简单点理解生成器就是一个迭代器。 使用yield,可以让函数生成一个序列,该函数返回的对象类型是”generator...

    Python语言基础:迭代器和生成器.pptx

    迭代器和生成器是Python编程中的重要概念,特别是在处理大量数据或进行高效内存管理时,它们的优势尤为明显。本文将详细讲解这两个概念及其在Python语言中的应用。 **迭代器** 迭代器是Python中访问集合元素的一种...

    python中yield的用法详解1

    在标题"python中yield的用法详解1"和描述中,主要讲解了`yield`关键字的基本概念和工作原理。首先,当一个函数含有`yield`关键字时,该函数不会立即执行,而是返回一个生成器对象(g)。生成器对象可以理解为一个...

    Python 中由 yield 实现异步操作

    yield在python中初学时,觉得比较难理解。yield的作用: ①返回一个值、②接收调用者的参数 分析下面的代码: #!/usr/bin/env python3 # -*- coding:utf-8 -*- def consumer(): r = '' while True: n = yield r ...

    基于Python中的yield表达式介绍

    python中生成器是迭代器的一种,使用yield返回函数值。每次调用yield会暂停,而可以使用next()函数和send()函数可以恢复生成器。 这里可以参考Python函数式编程指南:对生成器全面讲解 注意到yield是个表达式而不仅仅...

    python中yield的用法详解——最简单,最清晰的解释

    ### Python中`yield`的关键概念与使用详解 #### 前言 在Python编程语言中,`yield`关键字提供了一种高效且灵活的方式来处理大型数据集或无限序列,尤其是在涉及迭代器、生成器等概念时更为突出。本文将详细介绍`...

Global site tag (gtag.js) - Google Analytics