У меня есть функция, которая имеет несколько выходов, каждый из которых "родной", то есть целые числа и строки. Например, допустим, у меня есть функция, которая анализирует строку и находит как количество слов, так и среднюю длину слова.
В 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, так что я знаю, что я могу упустить что-то тривиальное здесь ...
Спасибо