Python新手:在Python中返回多个Int/String结果
我有一个函数,它有几个输出,所有输出都是“本机的”,即整数和字符串。例如,假设我有一个函数,它分析一个字符串,并找到单词的数量和平均长度 在C/C++中,我将使用@向函数传递2个参数。在Python中,我不确定什么是正确的解决方案,因为整数和字符串不是通过引用传递的,而是通过值传递的(至少这是我从试错中了解到的),所以下面的代码不起作用:Python新手:在Python中返回多个Int/String结果,python,parameters,reference,Python,Parameters,Reference,我有一个函数,它有几个输出,所有输出都是“本机的”,即整数和字符串。例如,假设我有一个函数,它分析一个字符串,并找到单词的数量和平均长度 在C/C++中,我将使用@向函数传递2个参数。在Python中,我不确定什么是正确的解决方案,因为整数和字符串不是通过引用传递的,而是通过值传递的(至少这是我从试错中了解到的),所以下面的代码不起作用: def analyze(string, number_of_words, average_length): ... do some analysis
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)
def analyze(s, num_words, avg_length):
# do something
return s, num_words, avg_length
然而,这感觉并不正确。正确的蟒蛇方法是什么?请注意,我指的只是函数返回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)
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)
如果您返回函数中的变量,如下所示:
s = "hello goodbye"
result = {}
analyze(s, result)
def analyze(s, num_words, avg_length):
# do something
return s, num_words, avg_length
然后可以这样调用它来更新传递的参数:
s, num_words, avg_length = analyze(s, num_words, avg_length)
但是,对于示例函数,这会更好:
def analyze(s):
# do something
return num_words, avg_length
如果您返回函数中的变量,如下所示:
s = "hello goodbye"
result = {}
analyze(s, result)
def analyze(s, num_words, avg_length):
# do something
return s, num_words, avg_length
然后可以这样调用它来更新传递的参数:
s, num_words, avg_length = analyze(s, num_words, avg_length)
但是,对于示例函数,这会更好:
def analyze(s):
# do something
return num_words, avg_length
在python中,您不会以C/C++的方式修改参数(通过引用或指针传递参数,并在原位进行修改)。正确的做法是在元组中返回修改后的参数(正如SilentGhost建议的那样),并将变量重新绑定到新值。在python中,您不会以C/C++的方式修改参数(通过引用或指针传递参数,并在原地进行修改)。有一些原因,例如字符串对象在python中是不可变的。正确的做法是在元组中返回修改后的参数(正如SilentGhost所建议的),并将变量重新绑定到新值。在这种情况下除外,因为在Python中,整数和字符串是不可变的。在这种情况下除外,因为在Python中,整数和字符串是不可变的。请参阅关于“按对象引用调用”请参阅关于“按对象引用调用”