一行python中的多个赋值,如Java中的a=b=c?

一行python中的多个赋值,如Java中的a=b=c?,java,python,file,variable-assignment,Java,Python,File,Variable Assignment,在Java中,这是有效的。在一条语句中有多个赋值 while ((sCurrentLine = br.readLine()) != null) { System.out.println(sCurrentLine); } python中也有类似的东西。我试过了,但出现了以下错误 >>> file = open("reverse.py") >>> while(x=file.readline()!=""):

在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
>文件=打开(“reverse.py”)
>>>而(x=file.readline()!=“”):
文件“”,第1行
而(x=file.readline()!=“”):
^
SyntaxError:无效语法

不,没有这样的事

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

with open(filename) as fp:
    for line in fp:
        pass

不,没有这样的事

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

with open(filename) as fp:
    for line in fp:
        pass

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

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

您可以查看详细解释。

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

while ((sCurrentLine = br.readLine()) != null) {
                System.out.println(sCurrentLine);
            }
您可以查看详细的解释。

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

您的问题是while语法,即while(谓词)。在python中,赋值不能是谓词的一部分

然而,大多数情况下,在python中不需要这些类型的构造,因为它们是隐式的。你可以做:

file = open('reverse.py')
for line in file:
    <do something>
file=open('reverse.py')
对于文件中的行:
它将自动终止于EOF,停止迭代;你不需要做人工哨兵检查。更具python风格的是使用上下文管理器:

with open('reverse.py') as file:
    for line in file:
        <do something>
以open('reverse.py')作为文件的
:
对于文件中的行:
与上述操作类似,但在完成后也会自动关闭文件

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

您的问题是while语法,即while(谓词)。在python中,赋值不能是谓词的一部分

然而,大多数情况下,在python中不需要这些类型的构造,因为它们是隐式的。你可以做:

file = open('reverse.py')
for line in file:
    <do something>
file=open('reverse.py')
对于文件中的行:
它将自动终止于EOF,停止迭代;你不需要做人工哨兵检查。更具python风格的是使用上下文管理器:

with open('reverse.py') as file:
    for line in file:
        <do something>
以open('reverse.py')作为文件的
:
对于文件中的行:

与上述操作类似,但在完成后也会自动关闭文件

+10个互联网。这是重要的一点:赋值不是一个表达式,而是一个语句,与许多其他语言不同。完整定义复制自以下文档:expr_stmt:testlist_star_expr(augsign(yield_expr | testlist)|('='(yield_expr | testlist_star expr))*)+10互联网。这是重要的一点:赋值不是一个表达式,而是一个语句,与其他许多语言不同。从文档复制的完整定义:expr_stmt:testlist_star_expr(augsign(yield_expr | testlist)|('='(yield_expr | testlist_star expr))*)有这样一个东西
a=b=c=42
是有效的、正常的、日常的python。有这样一种东西
a=b=c=42
是有效的、正常的、日常的python。