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

问题:

在Python中,我看到使用以下语法交换的两个变量值:

left, right = right, left

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

回答:

Python从左到右评估表达式。请注意,在评估作业时,右侧将在左侧进行评估。
 http://docs.python.org/2/reference/expressions.html#evaluation-order

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

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

该机制有效地交换了分配给标识符ab的对象
所以,回答你的问题是:是的,这是在两个对象上交换两个标识符的标准方式。
顺便说一下,对象不是变量,它们是对象。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Is there a standardized method to swap two variables in Python?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

49 + = 50