一、发现问题
今天研究python引用传递,发现了这么个例子:
def swap(dw):
# 下面代码实现dw的a、b两个元素的值交换
dw['a'], dw['b'] = dw['b'], dw['a']
print("swap函数里,a元素的值是",dw['a'], ";b元素的值是", dw['b'])
dw = {'a': 6, 'b': 9}
swap(dw)
print("交换结束后,a元素的值是", dw['a'], ";b元素的值是", dw['b'])
结果如下图:
百思不得其解啊,你这怎么就交换了,让人匪夷所思啊
二、解决问题
经过查阅,发现,python底层是这么个情况:
x1,x2 = x2,x1的含义是: a = x2 b = x1 x1 = a x2 = b
那么就好理解了,dw[‘a’], dw[‘b’] = dw[‘b’], dw[‘a’] 就相当于如下代码:
x = dw['a']
y = dw['b']
dw['b'] = x
dw['a'] = y
问题迎刃而解