2

以下代码在python中不起作用

x = 11
print(x += 5)

虽然这段代码确实

x = 11
x += 5
print(x)

这是为什么?

4

3 回答 3

8

x += 5 是一个语句,而不是一个表达式。您只能在函数调用中使用表达式作为参数。

我假设您已经习惯了类似 C 的语言,其中 x += 5 是一个表达式,但在 Python 中却不是。

于 2011-02-25T09:30:46.127 回答
8

问题是由于语句和表达式之间的差异。 这个问题有一个很好的答案,可以解释差异,关键是:

表达式:求值的东西。示例:1+2/x

语句:做某事的一行代码。示例:转到 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 将因编译错误而失败,因为您有一条语句,其中应该有一个表达式。

于 2011-02-25T09:44:04.863 回答
1

在 Python 中,函数调用只接受表达式,而不接受语句。

任何带有等号的东西都是一个陈述。

这与您不能这样做的原因相同:

if x += 5:
    print x

有关完整详细信息,请参阅 Python 语言参考(3.2 版2.7 版)。

于 2011-02-25T09:29:55.157 回答