我有以下功能:
| def line_reader_iter(file_object):
| while True:
| a_line = file_object.readline()
| if len(a_line)==0: raise StopIteration
| yield a_line[:-1]
我在某处说:
^{pr2}$显然,lambda之所以有效,是因为编译时与运行时行为之间似乎存在差异,这是非常受欢迎的:行_reader_iter()将对迭代器对象的引用放入lambda表达式中,而不是每次计算lambda时创建生成器对象。但是:这种行为是便携和稳定的吗?我只是一个Python新手,不知道我的代码相对于Python执行模型是否处于灰色地带。有人能告诉我吗?在
斯拉蒂
我想你实际上是误解了为什么这是有效的。每次调用
line_reader()
时,都会创建一个新的line_reader_iter
生成器。它似乎可以工作,因为您每次都使用相同的infile
,并且对readline()
的每次调用都将返回文件的下一行。在考虑下面这个简单的例子:
您可以使用以下方法获得所需的行为:
^{pr2}$下面是我的范围示例的工作方式:
相关问题 更多 >
编程相关推荐