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 的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql实现类似oracle的序列,m
- 下一篇: php滚动窗口多条动态,详解原生JS是实