有没有标准化的方法可以在Python中交换两个变量?

发布于 2021-02-02 23:20:50

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

left, right = right, left

这是否被认为是交换两个变量值的标准方法,还是有其他一些习惯上最常用的交换两个变量的方法?

关注者
0
被浏览
134
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

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

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

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

    • 对右侧b,a进行求值,即在内存中创建两个元素的元组。这两个元素是由标识符b和所指定的对象a,它们在程序执行期间对指令进行加密之前就已存在
    • 创建该元组后,仍未分配该元组对象,但这没关系,Python内部知道它在哪里
    • 然后,评估左侧,即将元组分配给左侧
    • 由于左侧是由两个标识符组成的,因此将元组解压缩,以便将第一个标识符a分配给元组的第一个元素(这是在交换之前为b的对象,因为它具有名称b)
      ,并且第二个标识符b分配给元组的第二个元素(该对象以前是交换之前的a,因为其标识符为a)

    该机制有效地交换了分配给标识符的对象,a并且b

    因此,回答你的问题:是的,这是在两个对象上交换两个标识符的标准方法。
    顺便说一下,对象不是变量,而是对象。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看