इस प्रश्न में पायथन के लिए अपेक्षाकृत नया होने के नाते मैं कुछ गलत शब्दावली का उपयोग कर सकता हूं और गलतफहमी प्रदर्शित करूंगा - जो मैं यहां हूं।पायथन। पैरामीटर्स और लौटे गए मान
मैं पायथन कार्यों का अध्ययन कर रहा हूं और यह सुनिश्चित करने की कोशिश कर रहा हूं कि मैं समझता हूं कि चर कैसे पारित किए जाते हैं और लौटे जाते हैं।
मैं एक सूची
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', ...] का मूल मान "वैश्विक" है?
func_sort_list (unsort_letters) पर कॉल करके मैंने unsc_letters के पते/सूचक को func_sort_list में पास कर दिया है?
एनएन फ़ंक्शन में एक चर "स्थानीय" है लेकिन इसमें पास चर के लिए सूचक/पता है और चूंकि एक सूची उत्परिवर्तनीय है, फ़ंक्शन के भीतर unsort_letters की सामग्री बदल दी जा रही है?
कौन सा मुझे की ओर जाता है:
वहाँ कभी एक परिस्थिति जब मैं समारोह के भीतर पारित पैरामीटर की सामग्री को बदल नहीं सकते है और मैं कुछ लिखने के लिए है निम्नलिखित की तरह?
def func_return_only(input_parm): result_var = << some processing on input_parm goes here>> return (result_var)
कौन सा मैं के रूप में var_s में लौटे मूल्यों के मूल्य पर प्राप्त करने के लिए इस प्रकार envoke किया है।
var_s = func_return_only(<< my input variable or value>>)
?
[यह उदाहरण] (दस्तावेज में http://stackoverflow.com/documentation/python/228/functions/2920/argument-passing-and-mutability) इस मुद्दे को अच्छी तरह बताता है। – user2314737
लिंक के लिए धन्यवाद। की सराहना की। –