使用与蟒蛇
回答
问题是由于语句和表达式之间的差异。 This question has an excellent answer which explains the difference,关键点之中:
表达:东西将计算得到一个值。示例:1 + 2/x
声明:一行代码,它执行某些操作。例如:GOTO 100
print
声明需要打印输出的值。所以在括号里面放一个表达式给它打印价值。所以这可以像x
那样简单或者像"The value is %d" % x
这样更复杂的表达式。
x += 5
是一个语句,它增加了5到x
,但它不会返回值为print
使用。
所以在Python你不能说
print(x += 5)
任何比你更可以说:
y = x += 5
然而,在其他一些语言,语句也表达式,即它们做一些和返回一个值。例如,您可以在Perl中执行此操作:
$x = 5;
$y = $x += 5;
print $y;
您是否希望这样做是另一个问题。
一个强制执行的Python语句和表达式之间的区别的好处是,避免常见错误的地方,而不是像这样:
if (myvar = 1) {
//do things
}
:
if (myvar == 1) {
//do things
}
你的错误以下
在第二种情况下,C会将myvar
设置为1,但是Python会因编译错误而失败,因为您有一个声明,您应该有一个表达式。
我认为这是在C/C++中作为序列点已知的,对吗? – 2011-02-25 11:25:24
呵呵,在python中没有这样的编译错误,它们都是运行时错误:-) – 2011-02-25 12:14:48
@Phobia:不正确。整个模块在第一条语句执行之前编译。文件中任何地方的语法错误都会阻止编译,所以模块根本不会运行。 – ncoghlan 2011-02-26 16:07:41
在Python中,函数调用只接受表达式,而不是语句。
任何与它相等的东西都是一个陈述。
这是同样的原因,你不能做的:
if x += 5:
print x
见的Python语言参考(3.2 version,2.7 version)的全部细节。
也有同样的原因,您不能执行'print(x = 5 )'。 – Benson 2011-02-25 09:31:20
x + = 5是一个语句,而不是一个表达式。您只能在函数调用中使用表达式作为参数。
我假设你习惯于C语言,其中x + = 5是一个表达式,但是在Python中它不是。
是的,我是一个Java程序员 – 2011-02-25 09:32:25
因为语言设计者不希望它。请参阅python的禅宗以了解对语言的期望:http://www.python.org/dev/peps/pep-0020/ – Benson 2011-02-25 09:32:17