在 Python 中是否有交换两个变量的标准化方法?

新手上路,请多包涵

在 Python 中,我见过使用以下语法交换两个变量值:

 left, right = right, left

这是否被认为是交换两个变量值的标准方法,或者是否有其他一些方法可以按照惯例最常交换两个变量?

原文由 WilliamKF 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 478
2 个回答

Python 从左到右计算表达式。请注意,在评估赋值时,右侧先于左侧评估。

Python 文档:评估顺序

这意味着以下表达式 a,b = b,a

  • 右侧 b,a 被求值,也就是说,在内存中创建了两个元素的元组。这两个元素是由标识符 ba 指定的对象,它们在程序执行期间遇到指令之前就已存在。
  • 就在这个元组创建之后,还没有对这个元组对象进行赋值,不过没关系,Python 内部知道它在哪里。
  • 然后,评估左侧,也就是说,将元组分配给左侧。
  • 由于左侧由两个标识符组成,元组被解包,以便将第一个标识符 a 分配给元组的第一个元素(这是交换之前以前是 b 的对象因为它有名字 b

第二个标识符 b 被分配给元组的第二个元素(它是交换之前 对象,因为它的标识符是 a

该机制有效地交换了分配给标识符 ab 的对象

因此,回答您的问题:是的,这是在两个对象上交换两个标识符的标准方法。

顺便说一句,对象不是变量,它们是对象。

原文由 eyquem 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是交换两个变量的标准方法,是的。

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题