在这个问题上相对较新的Python,我可能会使用一些不正确的术语,并会显示出误解 - 这就是我在这里的原因.
我正在研究Python函数,并试图确保我理解变量的传递和返回方式.
我已经写了这个简单的函数来对列表中的项进行排序
def func_sort_list(NN):
for w in NN:
print (w, type(w))
NN.sort()
print (NN)
return (w)
Run Code Online (Sandbox Code Playgroud)
我已将值分配给列表
unsort_letters=['q','w','e','r','t','y']
Run Code Online (Sandbox Code Playgroud)
然后我调用了这个功能
func_sort_list(unsort_letters)
Run Code Online (Sandbox Code Playgroud)
并得到结果
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'
Run Code Online (Sandbox Code Playgroud)
然后,执行后,如果我显示我最初传递给我得到的函数的变量的内容
unsort_letters
['e', 'q', 'r', 't', 'w', 'y']
Run Code Online (Sandbox Code Playgroud)
这是我想要的结果.
以下是对正确发生的事情的解释,以便在编写函数时能够感觉更安全吗?
unsort_letters的原始值['q','w','e',...]是"全局的"?
通过调用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)
Run Code Online (Sandbox Code Playgroud)我必须按如下方式调用以获取var_s中返回值的值.
var_s = …Run Code Online (Sandbox Code Playgroud)