在这个问题中,对于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
感谢您的链接。赞赏。 –