gpt4 book ai didi

python - Python 中有交换两个变量的标准化方法吗?

转载 作者:太空宇宙 更新时间:2023-11-03 20:57:58 25 4
gpt4 key购买 nike

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

left, right = right, left

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

最佳答案

Python evaluates expressions from left to right. Notice that whileevaluating an assignment, the right-hand side is evaluated before theleft-hand side.

Python docs: Evaluation order

这对于表达式 a,b = b,a 意味着以下内容:

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

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

所以,回答你的问题:是的,这是在两个对象上交换两个标识符的标准方法。
顺便说一句,对象不是变量,它们是对象。

关于python - Python 中有交换两个变量的标准化方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55892268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com