import dis
import timeit
def swap1():
x = 5
y=6
x, y = y, x
def swap2():
x = 5
y = 6
tmp = x
x = y
y = tmp
if __name__ == '__main__':
print dis.dis(swap1)
print dis.dis(swap2)

swap1
中通过ROT_TWO
交换栈顶的两个元素实现x
和y
值的互换,swap2
中引入了tmp
变量,多了一次LOAD_FAST
, STORE_FAST
的操作。执行一个ROT_TWO
指令比执行一个LOAD_FAST
+STORE_FAST
的指令快,这也是为什么swap1
比swap2
性能更好的原因。
网友评论