Python:yieldとyield fromの理解

1335 ワード

yieldって何?
yield単語の意味:降伏、降伏、提供
1つの関数にとって、プログラムの実行は、上から下まで1回実行され、この関数もその使命を果たします.

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