在這個問題中,對於Python來說比較新,我可能會使用一些不正確的術語,並會顯示誤解 - 這是我爲什麼在這裏。Python。參數和返回值
我正在學習Python函數,並試圖確保我理解變量是如何傳遞和返回的。
我寫了這個平凡函數在
def func_sort_list(NN):
for w in NN:
print (w, type(w))
NN.sort()
print (NN)
return (w)
我已經賦值給一個列表
unsort_letters=['q','w','e','r','t','y']
然後我envoke功能
func_sort_list(unsort_letters)
和列表中的項目進行排序得到結果
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'
然後,執行後,如果我顯示我最初傳遞給函數的變量的內容,我得到
unsort_letters
['e', 'q', 'r', 't', 'w', 'y']
這是我想要的結果。
以下是關於發生了什麼事的解釋正確,所以在編寫函數時我可以感覺更安全一些?
unsort_letters,['q','w','e',...]的原始值是「global」嗎?
通過調用func_sort_list(unsort_letters)我已經將unsort_letters的地址/指針傳遞給func_sort_list?
NN是函數的變量「local」,但它包含指向傳入變量的指針/地址,並且由於列表可變,函數內的unsort_letters的內容將被更改?
這使我:
是否有過當我不能改變函數內傳遞的參數的內容的情況下,我必須寫的東西如下所示?
def func_return_only(input_parm): result_var = << some processing on input_parm goes here>> return (result_var)
這我倒要envoke如下得到在var_s返回值的值。
var_s = func_return_only(<< my input variable or value>>)
?
[本示例](http://stackoverflow.com/documentation/python/228/functions/2920/argument-passing-and-mutability)在文檔中很好地解釋了這個問題。 – user2314737
感謝您的鏈接。讚賞。 –