博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
yield
阅读量:7052 次
发布时间:2019-06-28

本文共 1044 字,大约阅读时间需要 3 分钟。

yield , 初碰见不太可能会明白是什么意思.  从这里可以看出python的特点, 由于在背后做了大量的隐藏的工作, 才使得形式和使用上边的简洁和优美.  

 

这是一个很不好理解的概念, 请参考下面这两篇文章:

总结下来, 

1, 包含yield的函数是generator.

2, yield是表达式, 和return类似, 但是返回的是generator.

 

 

这篇文章写的很好, 从一个"如何生成斐波那契數列" 的例子开始.  从中能学到很多东西.  仔细看看这篇文章. 

看看这个例子, 当最后两行写出优美简介的循环时, 其实背后做了很多事情, 这再次说明了python的特点. 这绝对是一门易学难精的语言. 

# 利用 iterable 我们可以把 fab 函数改写为一个支持 iterable 的 class,以下是第三个版本的 Fab:# 你可以尝试一下去掉 __iter__ 这个函数的定义会发生什么class Fab(object):    def __init__(self, max):        self.max = max        self.n, self.a, self.b = 0, 0, 1    def __iter__(self):        return self    def next(self):        if self.n < self.max:            r = self.b            self.a, self.b = self.b, self.a + self.b            self.n += 1            return r        raise StopIteration() for n in Fab(8):    print(n)

 

为了易用和简洁, 不惜创造出了yield的这个魔法, 在形式之美的背后, 是迭代器, 生成器等众多手段.

# 使用yield的方式def fab(max):    n, a, b = 0, 0, 1    while n < max:        yield b        # print b        a, b = b, a + b        n += 1 for n in fab(8):    print(n)

 

转载于:https://www.cnblogs.com/qingyuanjushi/p/5986963.html

你可能感兴趣的文章
树莓派新版-入门配置 带配置选项翻译
查看>>
ssl问题
查看>>
Css布局系列——圣杯布局
查看>>
BaseAdapter教程(1) 最简单地使用BaseAdapter
查看>>
python包管理
查看>>
【377】only one element in a tuple
查看>>
【046】◀▶ HTML 关键字
查看>>
css---媒体查询
查看>>
浅谈Js原型的理解
查看>>
Spark技术内幕: Task向Executor提交的源码解析
查看>>
git for c#,文件改动内容
查看>>
linux syslog 日志采集系统搭建
查看>>
xuyaojiade
查看>>
大神的博客地址
查看>>
50道Java线程面试题汇总
查看>>
阿里云
查看>>
maven可用镜像
查看>>
hihocoder 1582 : Territorial Dispute (计算几何)(2017 北京网络赛E)
查看>>
图片加载方式
查看>>
Linux c readdir是非线程安全,需用readdir_r,要注意用静态变量当做返回值的函数的非线程安全性...
查看>>