Mah*_*sam 2 python compound-operator python-3.x
以下代码在python中不起作用
x = 11
print(x += 5)
Run Code Online (Sandbox Code Playgroud)
而这段代码确实如此
x = 11
x += 5
print(x)
Run Code Online (Sandbox Code Playgroud)
这是为什么?
问题是由于Statement和Expression之间的区别. 这个问题有一个很好的答案解释了差异,关键点是:
表达式:评估值的东西.示例:1 + 2/x
声明:执行某些操作的代码行.示例:GOTO 100
该print声明需要打印出一个值.所以在括号中你放了一个表达式,给它打印的值.所以这可以是简单的事情,也可以是x更复杂的表达"The value is %d" % x.
x += 5是一个添加5的语句,x但它没有返回值print使用.
所以在Python中你不能说
print(x += 5)
Run Code Online (Sandbox Code Playgroud)
比你说的更多:
y = x += 5
Run Code Online (Sandbox Code Playgroud)
但是,在某些其他语言中,语句也是表达式,即它们执行某些操作并返回值.例如,您可以在Perl中执行此操作:
$x = 5;
$y = $x += 5;
print $y;
Run Code Online (Sandbox Code Playgroud)
你是否愿意这样做是另一个问题.
在Python中强制执行语句和表达式之间差异的一个好处是,您可以避免常见的错误,而不是像:
if (myvar == 1) {
//do things
}
Run Code Online (Sandbox Code Playgroud)
你有以下错误:
if (myvar = 1) {
//do things
}
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,C将设置myvar为1但Python将因编译错误而失败,因为您有一个应该有表达式的语句.
| 归档时间: |
|
| 查看次数: |
385 次 |
| 最近记录: |