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

在Python中,我已经看到了使用这个语法交换的两个变量值:

left, right = right, left 

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

Python从左向右评估表达式。 请注意,在评估分配时,右侧将在左侧进行评估。

http://docs.python.org/3/reference/expressions.html#evaluation-order

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

  • 在右边b,a被评估,也就是说在存储器中创建了两个元素的元组。 这两个元素是由标识符ba指定的对象,它们是在执行程序期间指令被执行之前存在的对象
  • 刚创建这个元组之后,这个元组对象的分配还没有完成,但没关系,Python内部知道它在哪里
  • 然后评估左侧,也就是说元组被分配到左侧
  • 由于左侧是由两个标识符组成的,所以元组被解包,以便将第一标识符a分配给元组的第一个元素(因为它具有名称b所以它是在交换之前b的对象)
    而第二个标识符b被分配给元组的第二个元素(这是之前交换的对象,因为它的标识符是a

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

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

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

我知道三种交换变量的方法,但a, b = b, a是最简单的。 有

XOR(整数)

 x = x ^ y y = y ^ x x = x ^ y 

或简明扼要地,

 x ^= y y ^= x x ^= y 

临时变量

 w = x x = y y = w del w 

元组交换

 x, y = y, x 

我不会说这是一个标准的交换方式,因为它会导致一些意想不到的错误。

 nums[i], nums[nums[i] - 1] = nums[nums[i] - 1], nums[i] 

nums[i]将首先被修改,然后影响第二个变量nums[nums[i] - 1]