为什么
x = (y = z + 1)非法?
那
x = y = z + 1为什么合法呢?
两者有什么区别?
谢谢
在 Python 中,x = (y = z + 1) 是非法的语法,因为 Python 不支持嵌套的赋值表达式。这是因为 Python 将赋值语句视为一个语句而不是一个表达式,因此不能将其作为其他表达式的一部分来使用。
相反,x = y = z + 1 是一个合法的语法,它可以被解释为两个连续的赋值语句:首先将 z + 1 的结果赋值给 y,然后将 y 的值赋值给 x。这种写法在 Python 中是很常见的,用于同时赋值多个变量。
需要注意的是,尽管 x = y = z + 1 是一个合法的语法,但它并不等价于 x = (y = z + 1)。在后者中,赋值语句的返回值是被赋的值(也就是 z + 1),因此 x 的值也会被设置为 z + 1。而在前者中,y 和 z + 1 先进行赋值运算,得到的是一个布尔值,然后将这个布尔值再次赋值给 x,这显然是不正确的。因此,如果想要同时对多个变量赋值,应该使用 x = y = z + 1 这种形式。
如果是c语言,这样嵌套就是允许的
因为c语言中赋值语句也是一个表达式,它有返回值
而python中赋值语句没有返回值,不可以作为右值
答案:
x = (y = z + 1) 在Python中是非法的语法,这是因为Python不支持在一个赋值语句中嵌套另一个赋值语句。
而 x = y = z + 1 是合法的赋值语法,这里简单解释下实际执行的过程:
z + 1 的结果会被赋值给 y (即 y = z + 1) 然后 y 的值又会被赋值给 x (即 x = y)
这两种方式在赋值结果上是相同的,但是第二种方式会更加简洁和易读。因此,建议在Python编程中采用第二种方式。
以下是相关代码演示:
x = (y = z + 1) # 报语法错误
y = z + 1 x = y