在Python中使用print()与复合运算符

2 投票
3 回答
539 浏览
提问于 2025-04-16 12:31

下面这段代码在Python中不管用

x = 11
print(x += 5)

而这段代码就可以正常运行

x = 11
x += 5
print(x)

这是为什么呢?

3 个回答

1

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

任何带有等号的东西都是语句。

这就是为什么你不能这样做的原因:

if x += 5:
    print x

想了解更多详细信息,可以查看Python语言参考文档(3.2版本2.7版本)。

8

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

我猜你可能习惯于像C语言这样的编程语言,在那里 x += 5 是一个表达式,但在Python中它不是。

8

这个问题是因为“语句”和“表达式”之间的区别。这个问题有个很好的回答,解释了它们的不同,关键点是:

表达式:可以计算出一个值的东西。例如: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会因为你在应该有表达式的地方写了一个语句而报错。

撰写回答