Votre code est presque optimal, en ce qui concerne la répétition et l'évaluation du code. La seule chose à laquelle je pense pour éviter la répétition serait :
# be optimistic!
either_true = True
if x:
do_something1
elif y:
do_something2
else:
either_true = False
if either_true:
do_something3
Cela supprime une affectation, bien que le nombre total de lignes ne change pas.
L'avantage est que cela fonctionne avec n
sans ajouter aucune autre affectation, alors que votre solution actuelle requiert une either_true = True
pour chaque condition.
À mon avis, ils ont à peu près le même degré de lisibilité, mais le code ci-dessus sera meilleur avec plus de conditions.
De plus, il n'y a pas de méthode "pythonique" autre qu'une solution lisible qui évite la répétition du code et est optimale en termes d'efficacité, et je ne connais aucune sorte de "meilleure programmation" pour atteindre le même résultat.