Python中的yield关键词是做什么的?

论述Python的yield的关键词的用法的高头文章着实不少,读得人云里雾里。实际上,该关键词比较简单,懂得return就懂得yield。

在Python中return关键词与yiled关键词是孪生兄弟。“return”是“return-and-stop”,而yield则是“return-but-continue”。下面从具体案例中分析:

Python中的yield关键词是做什么的?

尝试Return获取数字列表

定义下面的程序获取数字列表:

def num_list(n):
    for i in range(n):
        return i

运行:

In [5]: num_list(3)
Out[5]: 0

看到没,用return只会返回一个结果。

Yield来了

用yield改写上面的程序:

In [10]: def num_list(n):
    ...:     for i in range(n):
    ...:         yield i
    ...:

In [11]: num_list(3)
Out[11]: 

In [12]: list(num_list(3))
Out[12]: [0, 1, 2]

现在,我们得到了完整的数字列表。

与return运行一次并退出不同,yield将会运行我们指定的次数。因此,可以简单将return理解为return-one-of-them,yield为return-all-of-them。这被称之为iterable。

Python中的yield关键词是做什么的?


更进一步

yield程序也能用return改写:

In [15]: def num_list(n):
    ...:     result = []
    ...:     for i in range(n):
    ...:         result.append(i)
    ...:     return result

In [16]: num_list(3)
Out[16]: [0, 1, 2]

这就是yield的核心思路。

然而,yield返回的结果与return返回的结果颇为不同。yiled输出列表[0, 1, 2],却只能提取一次其中的数值,因而也就有了新的名字generator。

总结:

我们简单做这样的比喻:

Python中的yield关键词是做什么的?

展开阅读全文

页面更新:2024-04-30

标签:关键词   能用   数值   论述   比喻   称之为   思路   定义   次数   核心   名字   简单   数字   程序   列表

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top