【发布时间】:2017-08-29 11:54:14
【问题描述】:
在这个问题上我对 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']
然后我调用函数
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) 我已将 unsort_letters 的地址/指针传递给 func_sort_list?
-
NN 是函数的“本地”变量,但它包含传递变量的指针/地址,并且由于列表是可变的,所以 unsort_letters 的内容在函数内会发生变化?
李>
这导致我:
-
是否存在无法更改函数内传递参数的内容而必须编写类似以下内容的情况?
def func_return_only(input_parm): result_var = << some processing on input_parm goes here>> return (result_var)
我必须如下调用才能获得 var_s 中返回值的值。
var_s = func_return_only(<< my input variable or value>>)
?
【问题讨论】:
-
This example 在文档中很好地解释了这个问题。
标签: python python-3.x parameter-passing