why does python assignment not return value: 上有一篇不错的帖子。但我不明白,为什么它不是 expression
在Python中:
以下内容在 Java 中是合法的:
int w=5;
while (w-- > 2){
System.out.println(w);
}
即使在这里,如果我的理解是正确的,assignment w-- (w=w-1)
不返回任何内容,但设置 w 的值;在这里assignment
接下来是 expression
(比较)
同时w--,
python 中不允许,甚至不允许赋值后面跟表达式
例如:
#this code does not mean anything, an assignment followed by expression pattern.
>>> while ((b=10)!=5):
File "<stdin>", line 1
while ((b=10)!=5):
许多帖子声称拼写错误 =
与 ==
将导致 assignment
而不是comparison
。但我在上面看不到这一点, assignment of b=10
首先发生,因为它是带括号的,然后进行比较以检查它是否是 equal to 5
。有一个expression
在 while
声明。
感谢您的帮助
最佳答案
从 BNF 语法的角度来看,赋值由绑定(bind)到表达式的标识符组成,该表达式可简化为类型(原始解释,但你明白了),而表达式不包含赋值。这就是语言的语法结构。 Look through the grammar您将看到表达式不能包含赋值。
w--
是一个具有副作用的表达式,因此它的核心仍然是一个表达式(没有实际意义,因为它在 python 中不存在)。在表达式求值过程中大幅改变机器的状态可能被视为危险的。
关于java - python 和 Java 中 while 循环中的表达式与赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20847697/