欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python yield和yieldfrom,Python:对于yield与yield from 的理解

发布时间:2024/9/30 python 38 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python yield和yieldfrom,Python:对于yield与yield from 的理解 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

yield是什么?

yield单词的含义:屈服,投降,提供

对于一个函数而言,程序的执行,从上到下执行完一遍,这个函数也就完成了它的使命。

def hello():

print('exe 1')

print('exe 2')

hello()这个函数从上到下依次执行,然后hello()结束。

若一个函数中加入了yield语句,那么这个函数就被增强了,变成了一个生成器:generator。

对于一个函数,其程序执行到了yield语句,那么它选择了`投降`,返回一个结果,这个函数被中断,然后随着生成器的next的执行,该函数从中断的地方执行。

>```

def helloYield():

print('exe 1')

yield '1 be exed'

print('exe 2')

yield '2 be exed'

执行:

gen=helloYield()

print(gen.__next__())

print(gen.__next__())

结果:

exe 1

1 be exed

exe 2

2 be exed

yield from是什么?

yield 可以返回结果

yield from 可以返回一个新的迭代器

看一个例子:

有一个list,如下:

lists = [

1, 2, 3,

[4, 5, [6, 7], 8],

[[[9, 10], 11]],

[[]],

12,

]

需要将list中的所有数据一个个显示出来,如下:

1

2

3

4

5

6

7

8

9

10

11

12

采用yield from的方式,代码如下:

def flatten(items):

for item in items:

if isinstance(item, (list, tuple)):

yield from flatten(item)

else:

yield item

总结

以上是生活随笔为你收集整理的python yield和yieldfrom,Python:对于yield与yield from 的理解的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。