傻大方


首页 > 潮·科技 > >

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



按关键词阅读:

论述Python的yield的关键词的用法的高头文章着实不少 , 读得人云里雾里 。 实际上 , 该关键词比较简单 , 懂得return就懂得yield 。
【Python中的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 resultIn [16]: num_list(3)Out[16]: [0, 1, 2]这就是yield的核心思路 。
然而 , yield返回的结果与return返回的结果颇为不同 。 yiled输出列表[0, 1, 2] , 却只能提取一次其中的数值 , 因而也就有了新的名字generator 。
总结:我们简单做这样的比喻:

  • return与yield是twins;
  • list与generator是twins 。
Python中的yield关键词是做什么的?文章插图


    稿源:(未知)

    【傻大方】网址:http://www.shadafang.com/c/111J309432020.html

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


    上一篇:如何修改windows的PowerShell的键位绑定方式?

    下一篇:emacs-org 文件的重定位与归档