首页 > 编程知识 正文

python斐波那契数列递归算法,python的yield方法

时间:2023-05-03 14:34:32 阅读:111152 作者:3861

今天,小编给大家带来的是Python教程的yield。 我不知道很多新人会和编辑有反应。 另外,互联网上还没有找到足够简单的教程。 我觉得编辑在给大家回复后,有必要说yield。

在说yield之前,我们必须明确两个概念:什么是迭代器,什么是生成器。 那么,先熟悉这两个概念,然后去看yield吧。

迭代器(迭代器)。

关于迭代这个概念我们应该不知道。 以前在for周期里说过。 那么,现在回顾一下吧:

对于skills这样的列表集合,需要输出中的所有元素。 可以在for循环中重复skills。 换句话说,skills是一个迭代对象(循环对象)。 什么是迭代器呢?

迭代器是一种容器,它可以创建可以循环使用任何数据结构(如列表、元组、字符串或词典)的容器,其中的所有元素都可以使用for语句按顺序循环检索每个元素。

(仔细掂量这句话,在脑子里好好转! )

生成器(generator )

我刚说迭代器,让我来谈谈生成器。 有三种方法可以创建迭代器。 (这里不讨论。 感兴趣的学生请看前两个。 分别是__iter__ ()和__next__ () ) )方法中函数iter ) )的内置)。 这第三种方法是生成器。

生成器如何生成迭代器?

很简单。 关于今天要说的主题yield这个关键词,让我们来看看代码吧。

小编在这里做了一个制作kwdbl数列的函数。 这里采用了关键词“yield”。 让我们看看yield到底TM是何方神圣。

让我们先看看另一个函数:

让我们看看这两个函数有什么不同。 大家抠着眼睛仔细观察后,发现一个是yield b,一个是print(b ),其他没有什么区别。

OK,那我们进入下一步,取出这两个函数,看看他们有什么不同!

(在此为type ) )引入函数。 是专门用于判定某个数据类型的东西。 把应该判定的数据放在type后面的括号里就可以了)

那么,我们来运行这两个函数的类型。 那么,实行一下看看结果吧。

输出:

很明显看出了区别。 fab2函数仅在作为一个自定义函数运行结果时为NoneType,仅在type(fab2)时输出。

这时,有yield的函数呢。 其执行结果类型为generator。 也就是说,他成了生成器!

仅仅因为一个单词的不同,他们的根本属性就变了! 由于yield的存在,fab这个函数永远成为了生成器!

这就是发电机。

Yield

那么,就谈谈yield本身吧! 既然有这么大的本领,就应该知道怎么控制它吧。

首先,让我们看一下简单的函数:

这是一个很棒的函数。 里面除了yield以外什么都没有。 那么,把里面的要素都拿出来看看吧。 那么,现在直接执行这个函数:

输出:

如果直接执行此函数,则发现在generator object中无法输出。 因为是生成器,所以要反复输出哦。

输出:

OK,结果顺利输出了!

那么,回到fab函数吧。 对于这样的函数,我们应该如何执行输出?

请…。

考虑…。

对…进行试验。

电影……

刻上…。

输出:

正确输出kwdbl的前6次结果!

到此为止,我们知道yield是什么样的,函数将成为迭代器,以及如何使用它(需要反复输出)。

下一期见!

听说有气质的人会关注这个公众号!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。