web-dev-qa-db-fra.com

Python Erreur de retour de la fonction

J'écris une fonction python qui utilise deux tableaux de taille égale [n, 1]. Avant d'effectuer des calculs, je voudrais vérifier que les longueurs sont les mêmes, et sinon , renvoyer une erreur. Quelle est la meilleure pratique?

def do_some_stuff(array1, array2): 
# Before doing stuff, check to ensure both arrays have the same length

if len(array1) != len(array2):
#  Break and return with error

Je suis confus, car je veux casser et retourner un code d'erreur (disons -1). Semble que break reviendra sans aucune valeur, et return continuera à exécuter la fonction? Ou est-ce que Return sort du code restant?

10
GPB

Vous n'avez pas besoin du break

def do_some_stuff(array1, array2): 
    # Before doing stuff, check to ensure both arrays have the same length

   if len(array1) != len(array2):
       return -1

Renvoyez simplement le code d'erreur. De cette façon, le reste du code de la fonction ne sera pas exécuté.

3
k4ppa

Quelle est la meilleure pratique?

Dans le code python, les conditions d'erreur sont généralement indiquées avec des exceptions. Vous pouvez utiliser raise ValueError("Arrays must have the same size").

L'utilisation d'exceptions plutôt que de valeurs de retour pour indiquer des erreurs présente l'avantage supplémentaire que l'exception se propage jusqu'à ce qu'elle atteigne une instruction except. Vous pouvez donc reporter la gestion des erreurs à un endroit où cela a du sens. Les exceptions ont également un message descriptif associé au lieu d'un nombre magique.

L'instruction break , comme dans de nombreuses autres langues, est utilisée pour interrompre le flux en boucles, comme celles créées avec while ou for.

31
memoselyk