Będąc stosunkowo nowym w Pythonie w tym pytaniu, mogę używać niepoprawnej terminologii i będę wyświetlał nieporozumienia - i dlatego jestem tutaj.Python. Parametry i zwracane wartości
Studiuję funkcje Pythona i próbuję upewnić się, że rozumiem, w jaki sposób zmienne są przekazywane i zwracane.
Pisałem tę banalną funkcję sortowania pozycji na liście
def func_sort_list(NN):
for w in NN:
print (w, type(w))
NN.sort()
print (NN)
return (w)
mam przypisanej wartości do listy
unsort_letters=['q','w','e','r','t','y']
Potem envoke funkcję
func_sort_list(unsort_letters)
i uzyskaj wynik
q <class 'str'>
w <class 'str'>
e <class 'str'>
r <class 'str'>
t <class 'str'>
y <class 'str'>
['e', 'q', 'r', 't', 'w', 'y']
'y'
następnie, po wykonaniu, gdybym wyświetlić zawartość zmiennej pierwotnie przekazywana do funkcji otrzymuję
unsort_letters
['e', 'q', 'r', 't', 'w', 'y']
co jest wynikiem chcę.
Czy następująca interpretacja tego, co się wydarzyło, jest poprawna, więc czuję się trochę bezpieczniej podczas pisania funkcji?
pierwotnej wartości unsort_letters, [ 'q', 'w', 'e', ...], jest "globalny"?
Przez wywołanie func_sort_list (unsort_letters) Przekazałem adres/wskaźnik unsort_letters do func_sort_list?
NN jest zmienną "lokalną" dla funkcji, ale zawiera wskaźnik/adres do przekazanej zmiennej, a ponieważ lista jest zmienna, zawartość unsort_letters zmienia się w funkcji?
Co prowadzi mnie do:
Czy kiedykolwiek okoliczność, kiedy nie mogę zmienić zawartość przekazany parametr w funkcji i muszę coś napisać jak poniższe?
def func_return_only(input_parm): result_var = << some processing on input_parm goes here>> return (result_var)
Które muszę envoke w następujący sposób, aby dostać się w wartości zwracanych wartości w var_s.
var_s = func_return_only(<< my input variable or value>>)
?
[Ten przykład] (http://stackoverflow.com/documentation/python/228/functions/2920/argument-passing-and-mutability) w dokumentacji dokładnie wyjaśnia problem. – user2314737
Dziękuję za link. Doceniony. –