0

在 Java 中,这是有效的。单个语句中的多个赋值。

while ((sCurrentLine = br.readLine()) != null) {
                System.out.println(sCurrentLine);
            }

python中有没有类似的东西。我尝试过,但出现以下错误。

>>> file = open("reverse.py")
>>> while(x=file.readline()!=""):
  File "<stdin>", line 1
    while(x=file.readline()!=""):
           ^
SyntaxError: invalid syntax
4

3 回答 3

4

赋值不是python中的表达式。基本上 while 需要一个表达式,而您正在给出一个声明。

您可以在此处查看详细说明。

于 2013-10-04T19:15:46.820 回答
0

多个作业有效(尽管可能不是您期望的方式):

In [373]: a = b = c = 0x1234

In [374]: a
0x1234

In [375]: b
0x1234

In [376]: c
0x1234

你的问题是while语法,它只是while(谓词)。赋值不能成为python中谓词的一部分。

然而,大多数时候,你不需要 python 中的那些结构,因为它们是隐式的。你可以做:

file = open('reverse.py')
for line in file:
    <do something>

它将在 EOF 处自动终止,并带有 StopIteration;您不需要进行手动哨点检查。更 Pythonic 将是使用上下文管理器:

with open('reverse.py') as file:
    for line in file:
        <do something>

与上面类似,但完成后也会自动关闭文件。

于 2013-10-04T19:18:40.903 回答
0

不,没有这样的事情。

另一方面,Python 不需要这种语法。只需遍历文件对象:

with open(filename) as fp:
    for line in fp:
        pass
于 2013-10-04T19:14:00.657 回答