Pythonはyieldとsendの使い方を使います

1955 ワード

まず、一般的な計算フィボナッチの列のコードを見てみましょう.
基本版:
def old_fib(n):
    res = [0] * n
    index = 0
    a = 0
    b = 1
    while index

結果:
---------- ----------
1
1
2
3
5
8
13
21
34
55

yield版を使用するには:
def fib(n):
    index = 0
    a = 0
    b = 1
    while index

結果
----------  yield----------
1
1
2
3
5
8
13
21
34
55

send版を使用するには:
import random
import time

def stupid_fib(n):
    index = 0
    a = 0
    b = 1
    while index 

結果
----------  yield send----------
1
 0.3726817450087525 
1
 0.25331633079776733 
2
 0.09393476884999097 
3
 0.3392211006197199 
5
 0.33262903389842274 
8
 0.41414110149962935 
13
 0.21604414711985792 
21
 0.025865695087244345 
34
 0.28991156481780744 
55
 0.263892230023429 

yield fromの使用方法:
import random
import time

def stupid_fib(n):
    index = 0
    a = 0
    b = 1
    while index 

結果
----------  yield from send----------
 stupid_fib() 
1
 0.28898040867944874 
1
 0.46000191699833454 
2
 0.021769106639172697 
3
 0.20333080975901485 
5
 0.19305777011503833 
8
 0.09847006007411069 
13
 0.3013770267669208 
21
 0.13223476217553276 
34
 0.44592478930164614 
55
 0.0881971642022118