# -*- encoding: utf-8 -*-
import os
'''
第16条: 考虑用生成器来该写直接返回列表的函数
关键:
1 生成器
含义: 使用yield表达式的函数,返回迭代器
特点: 调用生成器函数时,不会真正运行,而是返回迭代器,
在迭代器调用next函数时,迭代器会把生成器推进到下一个yield表达式
用法: 将需要返回的列表的每一个值用yield返回,用yield取代return
优点: 避免将所有数据存放在列表而带来内存问题,应对任意长度的输入数据
注意点: 返回迭代器有状态,不能反复使用。
2 总结
生成器的主要目的是为了解决输入数据非常大而不能一次装载到内存进行处理的问题,
通过yield该写原来return的代码,将原来直接返回列表修改为逐个返回单个数据。
参考:
Effectiv Python 编写高质量Python代码的59个有效方法
'''
def getIndexOfText(string):
if string:
yield 0
for index, letter in enumerate(string):
if " " == letter:
yield (index + 1)
def process():
string = "Hello world, I like python."
for index in getIndexOfText(string):
print index
if __name__ == "__main__":
process()