Le problème avec les comparaisons est qu'elles peuvent être difficiles à déboguer lorsque vous mettez un >=
où il devrait y avoir un<=
# v---------- should be <
if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")
Python vous permet d' écrire simplement ce que vous voulez dire en mots
if number in xrange(10000, 30001): # ok you have to remember 30000 + 1 here :)
En Python3, vous devez utiliser à la range
place de xrange
.
edit: Les gens semblent être plus préoccupés par les repères microbench et la façon dont les opérations de chaînage sont cool. Ma réponse concerne la programmation défensive (moins de surface d'attaque pour les bugs).
À la suite d'une réclamation dans les commentaires, j'ai ajouté le micro benchmark ici pour Python3.5.2
$ python3.5 -m timeit "5 in range(10000, 30000)"
1000000 loops, best of 3: 0.266 usec per loop
$ python3.5 -m timeit "10000 <= 5 < 30000"
10000000 loops, best of 3: 0.0327 usec per loop
Si vous êtes préoccupé par les performances, vous pouvez calculer la plage une fois
$ python3.5 -m timeit -s "R=range(10000, 30000)" "5 in R"
10000000 loops, best of 3: 0.0551 usec per loop