我有一个有多个输出的函数,所有输出都是“本地”的,即整数和字符串。例如,假设我有一个分析字符串的函数,可以找到单词的数量和单词的平均长度。
在 C/C++ 中,我会使用 @ 将 2 个参数传递给函数。在 Python 中我不确定什么是正确的解决方案,因为整数和字符串不是通过引用传递而是通过值传递(至少这是我从反复试验中了解到的),所以下面的代码将不起作用:
def analyze(string, number_of_words, average_length):
... do some analysis ...
number_of_words = ...
average_length = ...
如果我执行上述操作,函数范围之外的值不会改变。我目前所做的是使用这样的字典:
def analyze(string, result):
... do some analysis ...
result['number_of_words'] = ...
result['average_length'] = ...
我使用这样的函数:
s = "hello goodbye"
result = {}
analyze(s, result)
然而,这感觉不对。实现此目标的正确 Pythonian 方法是什么?请注意,我指的只是函数返回 2-3 个结果的情况,而不是数十个结果。另外,我是 Python 的新手,所以我知道我可能在这里遗漏了一些微不足道的东西......
谢谢
请您参考如下方法:
python 有一个return 语句,它允许您执行以下操作:
def func(input):
# do calculation on input
return result
s = "hello goodbye"
res = func(s) # res now a result dictionary
但是你根本不需要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)
