少说话多写代码之Python学习054——类的成员(生成器的方法和模拟生成器))

栏目: Python · 发布时间: 5年前

内容简介:我们看看生成器的调用以及内部响应,外部访问生成器的send方法,类似于我们方位迭代器的next方法。内部响应的过程是,yield作为表达式使用。生成器重新运行时,yield方法返回一个值,如果send方法被使用,则返回none。

我们看看生成器的调用以及内部响应,

外部访问生成器的send方法,类似于我们方位迭代器的next方法。

内部响应的过程是,yield作为表达式使用。生成器重新运行时,yield方法返回一个值,如果send方法被使用,则返回none。

比如这样的过程,

def repeater(value):
    while True:
        new = (yield  value)
        if new is not None :
            value = new

r= repeater(42)
print(r.__next__())
print(r.send('瞅你咋地!'))

输出

42
瞅你咋地!

我们写生成器时,还需要有两个方法,throw和close。

throw抛出异常,close方法停止生成器。对于,以前旧的代码不包含生成器的,我们需要模拟生成器,以兼容程序。

这样使用,

def myCommonFlatten(seq):
    result =[]
    try:
        try: seq+''
        except TypeError:pass
        else:raise TypeError
        for list in seq:
            for item in myCommonFlatten(list):
                result.append(item)
    except TypeError:result.append(seq)
    return result

strSeq=['张道陵',['葛玄',['萨守坚','许旌阳']]]
for item in myCommonFlatten(strSeq):
    print(item)

输出

张道陵
葛玄
萨守坚
许旌阳

工程文件下载: https://download.csdn.net/download/yysyangyangyangshan/10823478


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Node.js开发实战

Node.js开发实战

[美] Jim R. Wilson / 梅晴光、杜万智、陈琳、纪清华、段鹏飞 / 华中科技大学出版社 / 2018-11-10 / 99.90元

2018年美国亚马逊书店排名第一的Node.js开发教程。 . Node.js是基于Chrome V8引擎的JavaScript运行环境,它采用事件驱动、非阻塞式I/O模型,具有轻量、高效的特点。Node.j s 工作在前端代码与 数据存储层之间,能够提高web应用的工作效率和 响应速度。本书以最新版Node.js 8为基础,从实际案例出发 讲解Node.js的核心工作原理和实用开发技......一起来看看 《Node.js开发实战》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具