57 votes

"ou mourir ()" en Python

Est-ce que quelqu'un utilise quelque chose comme ça en Python :

 def die(error_message):
    raise Exception(error_message)

...

check_something() or die('Incorrect data')

Je pense que ce genre de style est utilisé en PHP et Perl.

Trouvez-vous des (dés)avantages dans ce [style] ?

45voto

Duncan Points 25356

Beaucoup de bonnes réponses, mais personne n'a encore suggéré la manière évidente d'écrire ceci en Python :

 assert check_something(), "Incorrect data"

Sachez simplement que cela ne fera pas le contrôle si vous activez l'optimisation, pas que quiconque ne le fasse jamais.

23voto

Keith Devens Points 456

Bien que ce style soit courant en PHP et Perl, il n'est pas du tout Python et je vous encourage à ne pas écrire Python de cette façon. Vous devez suivre les conventions de la langue que vous utilisez et écrire quelque chose comme ceci :

 if not check_something():
    raise Exception('Incorrect data')

FWIW, la méthode "or die (...)" ajoute un autre niveau à votre trace de pile, ce qui est un autre inconvénient mineur.

8voto

Le plus gros inconvénient est que tous les mourants sont désormais les mêmes. Mieux vaut que check_something() lève une exception plus précise, puis rattrape-la au-dessus si nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X