python - 变量交换如何在内部工作?

标签 python

简单而简短的问题。在 Python 中交换两个变量非常简单:a, b = b, a。没关系,我没有异议 :) 但我对它在内部的工作方式很感兴趣?它会自己创建一些临时变量还是更有趣(我敢打赌)?

最佳答案

Python 源代码转换为 bytecode在执行之前。您可以通过使用反汇编器 dis 来查看交换在内部是如何工作的,以查看字节码的样子:

import dis
>>> def f(a,b): a, b = b, a
>>> dis.dis(f)
  1           0 LOAD_FAST                1 (b)
              3 LOAD_FAST                0 (a)
              6 ROT_TWO             
              7 STORE_FAST               0 (a)
             10 STORE_FAST               1 (b)
             13 LOAD_CONST               0 (None)
             16 RETURN_VALUE 

简单来说,它将 a 和 b 的值压入堆栈,旋转(交换)顶部两个元素,然后再次弹出值。

另见:

关于python - 变量交换如何在内部工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8587236/

相关文章:

python - 如何在 PyQt/PySide 中将项目添加到 QComboBox

python - 如何在 Python 中快速加载大型数据集?

python - Tensorflow Probability 中多项式模型的规范

python - 从 pandas 中获取多维数组

python - 重复 1D NumPy 数组中的值 "N"次

python - 搜索 Sqlite 数据库 - 所有表和列

python - 如何让 matplotlib 在同一窗口中绘制图像序列

python - Python 请求的 SSL 握手错误

python - 重命名 Pandas 中的特定列

python - 在python中执行相关os命令