当我使用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)
但上面看起来并不整洁。有人能提出一个好方法吗?
答案 0 :(得分:2)
在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 ++那样直观,但它确实消除了=
替换==
的错误,反之亦然。