Python新手:在Python中返回多个Int/String结果

Roe*_*ler 1 python parameters reference

我有一个函数有几个输出,所有输出都是"本机",即整数和字符串.例如,假设我有一个分析字符串的函数,并找到单词的数量和单词的平均长度.

在C/C++中,我会使用@将2个参数传递给函数.在Python中我不确定什么是正确的解决方案,因为整数和字符串不是通过引用传递而是通过值传递(至少这是我从试错中理解的),因此以下代码将不起作用:

def analyze(string, number_of_words, average_length):

    ... do some analysis ...

    number_of_words = ...    
    average_length = ...
Run Code Online (Sandbox Code Playgroud)

如果我执行上述操作,则函数范围之外的值不会更改.我目前所做的是使用这样的字典:

def analyze(string, result):

    ... do some analysis ...

    result['number_of_words'] = ...    
    result['average_length'] = ...
Run Code Online (Sandbox Code Playgroud)

我使用这样的功能:

s = "hello goodbye"
result = {}
analyze(s, result)
Run Code Online (Sandbox Code Playgroud)

但是,这感觉不对.什么是正确的Python方法来实现这一目标?请注意我只是指函数返回2-3个结果而不是数十个结果的情况.另外,我是Python的新手,所以我知道我可能会遗漏一些微不足道的东西......

谢谢

Sil*_*ost 17

python有一个return声明,允许您执行以下操作:

def func(input):
    # do calculation on input
    return result

s = "hello goodbye"
res = func(s)       # res now a result dictionary
Run Code Online (Sandbox Code Playgroud)

但你根本不需要result,你可以返回一些值,如下所示:

def func(input):
    # do work
    return length, something_else         # one might be an integer another string, etc.

s = "hello goodbye"
length, something = func(s)
Run Code Online (Sandbox Code Playgroud)