Python 中的多重赋值之谜
在 Python 中,赋值的计算方式可能不是很明显。其中一种情况是多重赋值,即同时为两个或多个变量赋值。
考虑以下情况:
>>> x = 1 >>> y = 2
现在,让我们尝试一次为两个值赋值:
>>> x, y = y, x + y >>> x 2 >>> y 3
出乎意料的是,与分配值相比,这会产生不同的结果分别:
>>> x = 1 >>> y = 2 >>> x = y >>> y = x + y >>> x 2 >>> y 4
解释
理解这种行为的关键在于赋值语句中的求值顺序。在 Python 中,赋值的右侧总是在实际设置变量之前完全计算。
在第一种情况下,“x, y = y, x y”,右侧计算为如下:
然后将变量设置为以下值:x 分配为 ham,y 分配为垃圾邮件。
相反,在第二种情况下,“x = y; y = x y”,赋值按顺序发生:x 设置为 y,然后 y 设置为 x y,这相当于 y y.
因此,第一种情况下的多重赋值的行为有所不同,因为值是同时计算和设置的。如果您想执行单独的作业,您应该使用后一种顺序方法。
以上是Python 的多重赋值与顺序赋值有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!