2017-01-26 1 views
0

мне сказали, что функция питона проходит по ссылке, вот примерПередача функции python по ссылке?

def append_element(some_list, element): 
    some_list.append(element) 

data = [3, 1, 2] 
append_element(data, 4) 

print(data) 
[3,1,2,4] 

Так оригинальный data изменился. Что заставляет меня чувствовать себя путают это

y = sorted(data) 
print(y) 
[1,2,3,4] 
print(data) 
[3,1,2,4] 

Если функция питон действительно проходит по ссылке, то почему после вызова этой функции sorted(), то data не изменилась?

+2

Python не проходит по ссылке. – user2357112

+0

Я читал книгу «Python for Data Analysis» в приложении, стр. 390. Кроме того, если она не проходит по ссылке, то как объяснить первый пример? – ftxx

+0

Python использует модель передачи параметров, которая довольно распространена в наши дни, но не имеет хорошего имени. Его иногда называют «вызовом по объекту» или (особенно для Java-людей) «передаются по значению, но вы должны иметь в виду, что значение, которое вы передаете, действительно является ссылкой». Обычно я указываю людям следующее объяснение: http://nedbatchelder.com/text/names.html – user2357112

ответ

2

Выход из sorted() - это совсем другой, новый список. Это не то же самое, что и аргумент.