在循环条件下设置变量



在Java中,我可以在循环条件中设置如下变量

String s;
while ((s=myFunction())!=null){
    System.out.println("It's there jim. "+s);
}

在本例中,s将被设置为myFunction()的结果。在Python中,我知道我可以用

s = myFunction()
while s!=None:
   print "It's there jim",s
   s = myFunction()

但是我想避免这样做。有没有一种方法,我可以做上面的Java代码在Python?

在Python中不能这样做。在Java中,赋值=是一个表达式,它的计算结果是被赋值变量的值。在Python中,=赋值是一个语句,所以它没有值(它只是被执行),不能以你描述的方式使用(详见这篇文章)。甚至,如果您试图在需要表达式的地方使用赋值,您将得到一个错误:

a = 0
(a = 10) + 1
=> SyntaxError: invalid syntax

您可以使用iter:

for s in iter(myFunction, None):
    print "It's there jim", s
print s

但是第一眼就会让人感到困惑,所以只要坚持你的内容就可以了。

最新更新