http: //www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/
引用上述文章的部分内容,
def fab(max):
n, a, b = 0, 0, 1
L = []
while n < max:
L.append(b)
a, b = b, a + b
n = n + 1
return L
改写后的 fab 函数通过返回 List 能满足复用性的要求,但是更有经验的开发者会指出,该函数在运行中占用的内存会随着参数 max 的增大而增大,如果要控制内存占用,最好不要用 List。
下面做了一个简单的实验,
#!/usr/bin/env python
import time
def fab(max): # 名为 fbo.py
n, a, b = 0, 0, 1
while n < max:
# print b
a, b = b, a+b
n = n+1
a = time.time()
fab(100000)
b = time.time()
print (b - a)
#!/usr/bin/env python
import time
def fab(max): # 名为 fbo1.py
n, a, b = 0, 0, 1
L = []
while n < max:
L.append(b)
a, b = b, a + b
n = n + 1
return L
a = time.time()
fab(100000)
b = time.time()
print (b - a)
运算结果如下:
gnu@dev:~$ python fbo.py
0.368745088577
gnu@dev:~$ python fbo1.py
16.414080143