在膳绫擎的代铝闼楝两个for语句输出是一样的,代码字面上看来也就是中括号与小括号的差别。但这点差别差别是很大年夜的,第一种办法返回值是一个列表,第二个办法返回的是一个generator对象。跟着RANGE_NUM的变大年夜,第一种办法返回的列表也越大年夜,占用的内存也越大年夜;然则对于第二种办法没有任何差别。
- def fib():
- a, b = 1, 1
- while True:
- yield a
- a, b = b, a+b
这个generator拥有生成无数多“返回值”的才能,应用者可以本身决定什么时刻停止迭代。
应用处景一:
Generator可用于产生数据流, generator并不急速产生返回值,而是比及被须要的时刻才会产生返回值,相当于一个主动拉取的过程(pull),比如如今有一个日记文件,每行产生一笔记录,对于每一笔记录,不合部分的人可能处理方法不合,然则我们可以供给一个公用的、按需生成的数据流。
- def gen_data_from_file(file_name):
- for line in file(file_name):
- yield line
- def gen_words(line):
- for word in (w for w in line.split() if w.strip()):
- yield word
- def count_words(file_name):
- word_map = {}
- for line in gen_data_from_file(file_name):
- for word in gen_words(line):
- if word not in word_map:
- word_map[word] = 0
- word_map[word] += 1
- return word_map
- def count_total_chars(file_name):
推荐阅读
化繁为简 海云捷迅为企业提供应用OpenStack新“姿势”
在版本进级方面,OpenStack每半年就会宣布一个版本,这是它的立异过程,但企业客户更多求稳,不会过快的进行迭代进级。海云捷迅底层技巧是每两年一个版本,首版是基于OpenStack的E版本,二版本是H版,三版本是基于社>>>详细阅读
地址:http://www.17bianji.com/lsqh/36457.html
1/2 1