En utilisant assert
/AssertionError
est probablement mal ici, je dirais. C'est utile pour "debugging assertions", c'est-à-dire, pour vous assurer que votre code est sain. Il n'est pas utile pour générer une erreur lorsque vous obtenez des données invalides, pour plusieurs raisons, dont la plus intéressante est probablement que l'assertion n'est même pas garantie d'être exécutée - si votre code est compilé avec des paramètres d'optimisation, il ne sera pas. Et diable, même si c'est un truc de débogage, j'utiliserais toujours raise-- c'est plus lisible, et ça arrivera toujours, peu importe quand ou pourquoi les données sont fausses. Donc pour le rendre plus "pythonique", je supprimerais l'affirmer et le remplacerais par quelque chose de plus agréable. En l'occurrence, une chose plus belle existe, et c'est l'instruction raise
. De plus, je remplacerais l'ensemble de valeurs maladroites/vérifier avec le else clause of loops, qui est exécuté lorsque la boucle est épuisée (ou, pour les boucles while, lorsque la condition devient fausse). Donc, si vous cassez, la clause else n'est pas exécutée.
for tr in completed_taskrevs:
for nr in completion_noterevs:
if tr.description in nr.body:
completion_noterevs.remove(nr)
break
else:
raise ValueError("description not found"); # or whatever exception would be appropriate
À part cela, je ne changerais probablement rien.
Que signifie "algo"? –
@ Algorithme S.Lott. –
@Hank Gay: Vraiment? Quelle langue est-ce? –