我不明白这两种方法的区别,有人能解释一下吗?为什么其中一个引用对象改变了,而第二个引用保持不变?我来自Java,C#背景,如果有帮助的话。对我来说,它们中的引用似乎都应该更新。谢谢
def changeme( mylist ):
"This changes a passed list into this function"
mylist.append([1,2,3,4]);
print "Values inside the function: ", mylist
return
# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist
函数内的值:[10,20,30,1,2,3,4]函数外的值:[10,20,30,1,2,3,4]
def changeme( mylist ):
"This changes a passed list into this function"
mylist = [1,2,3,4]; # This would assig new reference in mylist
print "Values inside the function: ", mylist
return
# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist
函数内的值: 1,2,3,4函数外的值: 10,20,30
发布于 2019-04-10 08:32:00
函数中的mylist = [1,2,3,4]
更改参数mylist
的值,该参数是函数外部对mylist
的引用的副本。原始引用不会更改。
如果要修改列表(而不是对其的引用),请使用mylist[:] = [1,2,3,4]
。
https://stackoverflow.com/questions/55603055
复制相似问题