Python使用yield和send的用法

先看一段普通的计算斐波那契续列的代码:

基本版:

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秒
复制完成

你可能感兴趣的:(Python使用yield和send的用法)