У меня есть этот кусок кода в Python:Python: Передавать по ссылке модифицирует этот аргумент
def sortList(x):
x.sort()
print "Values inside the function: ", x
return
mylist = [100,20,30];
sortList(mylist);
print "Values outside the function: ", mylist
Выход есть:
Values inside the function: [20, 30, 100] Values outside the function: [20, 30, 100]
Теперь, вместо того, чтобы писать x.sort()
если я напишите x=[1,2,3]
, тогда выход:
Values inside the function: [1, 2, 3] Values outside the function: [100, 20, 20]
Так почему же значение массива «mylist» изменяется внутри функции? И это тоже, только когда я выполняю некоторую операцию над ним, а не когда я назначаю ему совершенно новое значение?
Спасибо!
Стоит посмотреть на это, что связано: http://stackoverflow.com/questions/12797749/python-and-reference-passing-limitation?rq = 1 – EdChum
Поскольку 'list.sort' является ** на месте **, изменяет объект и возвращает' None', тогда как 'x = [1, 2, 3]' присваивает имя 'x' ** полностью новый объект ** и вообще не влияет на «mylist». – jonrsharpe