交换变量值

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)
交换变量值_第1张图片
image.png

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

你可能感兴趣的:(交换变量值)