Python中While循环中的赋值?
我刚刚遇到这段代码
while 1: line = data.readline() if not line: break #...  并认为, 一定有一个更好的方法来做到这一点,而不是使用一个有break的无限循环。 
所以我试了一下:
 while line = data.readline(): #... 
显然,有一个错误。
 有没有办法避免在这种情况下break ? 
编辑:
 理想情况下,你要避免说两次readline …恕我直言,重复是甚至更糟糕,特别是如果声明是复杂的。 
如果你没有对数据做任何更有趣的事情,比如稍后阅读更多的内容,那么总会有:
 for line in data: ... do stuff ... 
 试试这个,用open('filename') 
 for line in iter(data.readline, b''): 
这并不好,但这是我通常这样做的方式。 Python不像其他语言(例如Java)那样在variables赋值时返回值。
 line = data.readline() while line: # ... do stuff ... line = data.readline() 
喜欢,
 for line in data: # ... 
  ? 它很大程度上取决于data对象的readline语义的语义。 如果data是一个file对象,这将工作。 
 for line in data: ... process line somehow.... 
 将遍历file每一行,而不是使用一段while 。 按照我的经验(以Python)阅读文件是一个非常普遍的习惯用法。 
 事实上, data不一定是一个文件,而只是提供一个迭代器。 
你可以这样做:
 line = 1 while line: line = data.readline() 
 根据Python文档的FAQ ,用迭代的方式遍历inputfor结构或运行无限循环,并使用break语句来终止它,这是迭代的首选和惯用的方法。 
 如果data有一个返回迭代器而不是readline (比如说data.iterate )的函数,你可以简单地做: 
 for line in data.iterate(): #... 
 如果data是一个文件,如其他答案中所述,使用for line in file行将工作正常。 如果数据不是一个文件,并且是一个随机的数据读取对象,那么你应该将它实现为一个迭代器,实现__iter__和next方法。 
  next方法应该是阅读,检查是否有更多的数据,如果没有,提出StopIteration 。 如果你这样做,你可以继续for line in data语言中使用for line in data 。