并排初始化变量

时间:2018-03-18 18:15:04

标签: python-3.x python-2.7

I = 3,B = 5

为什么我不能在python中运行上面的行?它说无法分配文字错误。它不是Java或C ++中的错误。

1 个答案:

答案 0 :(得分:2)

“为什么不呢?”的大图回答是语言的设计者不喜欢这种语法,并且更喜欢程序员编写

i, b = 3, 5

{em>技术不允许这样做的原因以及错误消息的说明可以在reading the official grammar找到。

您还可以通过检查Python AST来尝试查看您的短语的含义。运行这个:

import ast
print(ast.dump(ast.parse("i=3,b")))

你得到了

Module(body=[Assign(targets=[Name(id='i', ctx=Store())], value=Tuple(elts=[Num(n=3), Name(id='b', ctx=Load())], ctx=Load()))])

因此,只需编写i=3,b即可将元组(3,b)赋值给变量i。现在你可以

i = b = 3

ib分配3。但如果你写了

i = 3, b = 5

然后你会尝试将5分配给不允许的元组(3,b)

这就是Python的方式。 Python的设计者希望它是这样的。他就是boss