在Python 2.7中拥有一个文件对象:
f = open('my_file', 'r')
使用for循环文件(最常见的方式)和使用xreadlines()
函数的区别是什么:
for line in f:
# Do something with line
并且
for line in f.xreadlines():
# Do something with line
我的意思是,这两个选项都定义了一个生成器,与readlines()
或read()
函数加载所有文件内容到内存的方式相反。
它们中有哪个在性能或文件处理方面有所改进?还是它们只是实现同样功能的等效方式?
xreadlines
先出现。一般情况下,Python 从基于列表的函数开始(如range
、items
、zip
),引入迭代器对应函数(xrange
、iteritems
、izip
),然后将原始函数改为返回迭代器。这是其中一个变更的末尾阶段。 - Katrielfor _ in something
会在幕后调用iter(something)
。 - Katriel