def factors(n):
results = []
for k in range(1,n+1):
if n % k == 0:
result.append(k)
return results
1
2
3
4
5
6
生成器中实现:
def factors(n):
for k in range(1,n+1):
if n % k == 0:
yield k
1
2
3
4
这里使用yield而不是return来表示结果,表明我们正在定义一个生成器而不是传统的函数(这里factors(n)函数也不会显式地输出任何结果)。
每次循环迭代中,python执行程序直到一个yield语句指出下一个值为止(在这一点上,该程序是暂时中断的,只有当另一个值被请求时才恢复)。
如果一个程序员写了一个循环,例如for factor in factors(100)则会创建一个生成器的实例。