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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值