在Python中使用print()与复合运算符
下面这段代码在Python中不管用
x = 11
print(x += 5)
而这段代码就可以正常运行
x = 11
x += 5
print(x)
这是为什么呢?
3 个回答
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会因为你在应该有表达式的地方写了一个语句而报错。