首页 >后端开发 >Python教程 >Python 的多重赋值与顺序赋值有何不同?

Python 的多重赋值与顺序赋值有何不同?

DDD
DDD原创
2024-12-05 02:26:09402浏览

How Does Python's Multiple Assignment Differ from Sequential Assignment?

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”,右侧计算为如下:

  • y 被评估为 ham。
  • x y 被评估为垃圾邮件。

然后将变量设置为以下值:x 分配为 ham,y 分配为垃圾邮件。

相反,在第二种情况下,“x = y; y = x y”,赋值按顺序发生:x 设置为 y,然后 y 设置为 x y,这相当于 y y.

因此,第一种情况下的多重赋值的行为有所不同,因为值是同时计算和设置的。如果您想执行单独的作业,您应该使用后一种顺序方法。

以上是Python 的多重赋值与顺序赋值有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn