这是因为它赋予新值s1
和s2
内部swap0
功能。这些分配不会在函数外传播。如果仅将函数主体复制并粘贴到函数调用的位置,就会看到它起作用。
def swap0(s1, s2):
assert type(s1) == list and type(s2) == list
tmp = s1[:]
s1[:] = s2
s2[:] = tmp
但是,在Python中进行交换的更简便更好的方法是:
s1, s2 = s2, s1
这也将只交换那些对列表的特定引用,而不交换列表内容本身。