以下代码在python中不起作用
x = 11
print(x += 5)
虽然这段代码确实
x = 11
x += 5
print(x)
这是为什么?
以下代码在python中不起作用
x = 11
print(x += 5)
虽然这段代码确实
x = 11
x += 5
print(x)
这是为什么?
x += 5 是一个语句,而不是一个表达式。您只能在函数调用中使用表达式作为参数。
我假设您已经习惯了类似 C 的语言,其中 x += 5 是一个表达式,但在 Python 中却不是。
问题是由于语句和表达式之间的差异。 这个问题有一个很好的答案,可以解释差异,关键是:
表达式:求值的东西。示例: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 将因编译错误而失败,因为您有一条语句,其中应该有一个表达式。