当我使用C ++语言编程时,经常会使用以下while
循环模式。
while ((Data data = GetNewData()) != END) {
// Do some processing
ProcessData(data);
}
我们如何在Python中做同样的事情?似乎以下内容无效。
while (data = GetNewData()) != END:
# Do some processing
ProcessData(data)
接下来我可以想到的另一种选择是。
while 1:
data = GetNewData()
if data == END:
break
# Do some processing using data
ProcessData(data)
但是上面看起来并不整洁。有人可以建议一个好方法吗?
最佳答案
在Python中,赋值是statement, not an expression,这就是为什么
while (data = GetNewData()) != END:
# Do some processing
ProcessData(data)
不起作用。
(data = GetNewData())
不能用作值。相反,您可以使用
iter
:for data in iter(GetNewData, END):
# Do some processing
ProcessData(data)
循环将在每次迭代时调用
GetNewData()
,并将其值分配给data
,除非它等于END
。尽管此语法绝对不像C ++那样直观,但是它确实消除了用=
代替==
的错误,反之亦然。