J'ai une fonction qui a plusieurs sorties, toutes "natives", c'est-à-dire des entiers et des chaînes. Par exemple, disons que j'ai une fonction qui analyse une chaîne, et trouve à la fois le nombre de mots et la longueur moyenne d'un mot.Débutant Python: Renvoyer plusieurs résultats Int/String en Python
En C/C++ j'utiliserais @ pour passer 2 paramètres à la fonction. En Python, je ne sais pas quelle est la bonne solution, car les entiers et les chaînes ne sont pas transmis par référence mais par valeur (du moins c'est ce que je comprends des essais et erreurs), donc le code suivant ne fonctionnera pas:
def analyze(string, number_of_words, average_length):
... do some analysis ...
number_of_words = ...
average_length = ...
Si je fais ce qui précède, les valeurs hors de la portée de la fonction ne changent pas. Ce que je fais actuellement est d'utiliser un dictionnaire comme ceci:
def analyze(string, result):
... do some analysis ...
result['number_of_words'] = ...
result['average_length'] = ...
Et j'utiliser la fonction comme ceci:
s = "hello goodbye"
result = {}
analyze(s, result)
Cependant, cela ne se sent pas bien. Quelle est la bonne façon Pythonienne d'y parvenir? S'il vous plaît noter que je ne fais référence qu'aux cas où la fonction renvoie 2-3 résultats, pas des dizaines de résultats. De plus, je suis un débutant complet à Python, donc je sais que je peux manquer quelque chose trivial ici ...
Merci
Voir http://www.google.com/url?sa=t&source=web&ct=res&cd=1&url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPython_syntax_and_semantics&ei=Q-oNSoG9C4resgajkY2ICA&usg=AFQjCNG_HE4ZKmUPGvVh9_SqhnJdMdYxaA&sig2=5h95J4BFgltEby5aDtEL0g à propos "appel par référence d'objet" – tzot