`
cloudhe
  • 浏览: 107693 次
  • 性别: 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中的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的用法.docx

    python中yield的用法全文共3页,当前为第1页。python中yield的用法全文共3页,当前为第1页。python中yield的用法 python中yield的用法全文共3页,当前为第1页。 python中yield的用法全文共3页,当前为第1页。 Python...

    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-yield用法详解.pdf

    python方法 python_yield用法详解

    基础算法-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] ...

    详解Python3中yield生成器的用法

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

    由浅入深讲解python中的yield与generator

    Python中的`yield`关键字和`generator`是编程中非常重要的概念,它们允许我们创建轻量级的迭代器,尤其在处理大量数据时,能够有效节省内存。本文将深入讲解`yield`和`generator`的基础知识及其高级应用。 首先,...

    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把文本转换为html-Python基础教程-把文本转为HTML格式.pdf

    ⽅法: 1.添加初始标签 2.智能分段 #util.py def lines(file): #遍历⽂本⽂件,⽤⽣成器保存每⾏ for line in file:yield line #此时获取到第⼀⾏的值后,会暂停,返回到被调⽤的地⽅,即blocks函数语句中 #在⽂件...

    Python yield的用法实例分析

    本文实例讲述了Python yield的用法。分享给大家供大家参考,具体如下: yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法。 只是粗略的知道yield可以用来为一个函数返回值塞...

    Python3:Python 3项目

    进一步深入,Python 3引入了一些新特性,如print函数的使用、异常处理(try/except)、上下文管理器(with语句)、生成器(generator)和yield关键字、以及类型注解等。理解并熟练运用这些特性,能让你的代码更加...

    Python简介:Python简介

    1. **Python的历史与哲学** Python的诞生源于Guido van Rossum对ABC语言的改进,旨在创造一种易于阅读和编写,同时又能提高程序员生产力的语言。Python的核心哲学是“优雅”、“明确”和“简单”,强调代码的可读性...

    Python yield 使用浅析

    初学 Python 的开发者经常会发现很多 Python 函数中用到了 yield 关键字,然而,带有 yield 的函数执行流程却和普通函数不一样,yield 到底用来做什么,为什么要设计 yield ?本文将由浅入深地讲解 yield 的概念和...

Global site tag (gtag.js) - Google Analytics