首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >变量交换在内部是如何工作的?

变量交换在内部是如何工作的?
EN

Stack Overflow用户
提问于 2011-12-21 16:59:32
回答 1查看 2.5K关注 0票数 24

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-21 17:02:24

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

代码语言:javascript
复制
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的值推入堆栈,旋转(交换)顶部的两个元素,然后再次弹出这些值。

另请参阅:

票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8587236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档