所以我正在使用 python 3.3 中的列表,这是我的示例代码:
def change_to_z(lis):
lis[3] = 'z'
def change_to_k(lis):
lis[4] = 'k'
def split(lis):
lis = lis[3:] + lis[:3]
totest = ['a', 'b', 'c', 'd', 'e', 'f']
change_to_z(totest)
print(totest)
change_to_k(totest)
print(totest)
split(totest)
print(totest)
和输出:
['a', 'b', 'c', 'z', 'e', 'f']
['a', 'b', 'c', 'z', 'k', 'f']
['a', 'b', 'c', 'z', 'k', 'f']
请注意,当我调用前两个函数时,我能够修改列表,而 totest 始终引用列表,即使它已更改。
但是,对于第三个函数,变量 totest 不再引用列表的最新修改版本。我的调试器告诉我,在“split”函数中,列表被翻转,但在函数之外,它没有被翻转。为什么变量名不再引用列表?
为什么会这样?什么运营商会发生这种情况?为什么有时变量名在函数中修改后仍然引用列表,但它与其他运算符的行为不同?