小编Cli*_*ong的帖子

蟒蛇.参数和返回值

在这个问题上相对较新的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)

这是我想要的结果.

以下是对正确发生的事情的解释,以便在编写函数时能够感觉更安全吗?

  1. unsort_letters的原始值['q','w','e',...]是"全局的"?

  2. 通过调用func_sort_list(unsort_letters)我已经将unsort_letters的地址/指针传递给func_sort_list?

  3. NN是函数的一个变量"local",但它包含传递变量的指针/地址,因为列表是可变的,unsort_letters的内容在函数内被更改?

这导致我:

  1. 当我无法在函数中更改传递参数的内容时,是否存在这样的情况,我必须编写如下内容?

    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)

python parameter-passing python-3.x

7
推荐指数
1
解决办法
1344
查看次数

标签 统计

parameter-passing ×1

python ×1

python-3.x ×1