题目
已知x=1,y=2。下列语句中,在Python中非法的是()。A.x=y=z=1 B.x=(y=z+1) C.x+=y D.y=x*x**2
已知x=1,y=2。下列语句中,在Python中非法的是()。
A.x=y=z=1
B.x=(y=z+1)
C.x+=y
D.y=x*x**2
题目解答
答案
在Python中非法的语句是B选项,因为它试图将一个表达式(`y = z+1`)赋值给x,这是一个无效的操作。以下是每个选项的解释:
A. `x = y = z = 1`:这是有效的,将1赋给变量x,y和z。
B. `x = (y = z + 1)`:这是无效的,因为y = z + 1的结果是2,将无法将2赋给x。
C. `x += y`:这是有效的,将x和y的和(即3)赋给x。
D. `y = x * x ** 2`:这是有效的,将1的平方(即1)乘以1的平方(即1),得到1,将其赋给变量y。
解析
本题考查Python中赋值语句的合法性。关键点在于理解赋值语句的结构:赋值号=
的右侧必须是一个表达式,而赋值语句本身不能作为表达式使用。选项B中,y=z+1
是一个赋值语句,将其放在另一个赋值语句的右侧会导致语法错误。
选项分析
A. x = y = z = 1
- 链式赋值:Python允许将多个变量赋值为同一个值。所有变量最终会被赋值为1,语法合法。
B. x = (y = z + 1)
- 错误原因:
y = z + 1
本身是一个赋值语句,赋值语句不能作为表达式出现在另一个赋值的右侧。Python不允许将赋值语句的结果直接赋值给另一个变量。
C. x += y
- 复合赋值:等价于
x = x + y
。当前x=1
,y=2
,计算后x=3
,语法合法。
D. y = x * x ** 2
- 运算优先级:
**
优先级高于*
,计算顺序为x ** 2
(结果为1),再与x
相乘(结果仍为1)。语法合法。