J'ai eu du mal à trouver un moyen décent de le faire aussi, alors j'ai juste eu une idée (pas une balle d'argent, car c'est principalement une question de goût).
if bool(condition1 and
condition2 and
...
conditionN):
foo()
bar()
Je trouve quelques mérites dans cette solution par rapport aux autres que j'ai vus, à savoir, vous obtenez exactement 4 espaces supplémentaires d'indentation (bool), permettant à toutes les conditions de s'aligner verticalement, et le corps de l'instruction if peut être indenté dans d'une manière claire (ish). Cela conserve également les avantages de l'évaluation en court-circuit des opérateurs booléens, mais ajoute bien sûr la surcharge d'un appel de fonction qui ne fait essentiellement rien. Vous pourriez argumenter (valablement) que n'importe quelle fonction renvoyant son argument pourrait être utilisée ici au lieu de bool, mais comme je l'ai dit, c'est juste une idée et c'est finalement une question de goût.
Assez drôle, alors que j'écrivais ceci et pensais au «problème», j'ai eu une autre idée, qui supprime les frais généraux d'un appel de fonction. Pourquoi ne pas indiquer que nous allons entrer dans une condition complexe en utilisant des paires de parenthèses supplémentaires? Disons, 2 de plus, pour donner un joli retrait de 2 espaces des sous-conditions par rapport au corps de l'instruction if. Exemple:
if (((foo and
bar and
frob and
ninja_bear))):
do_stuff()
J'aime un peu ça parce que quand vous le regardez, une cloche sonne immédiatement dans votre tête en disant "hé, il se passe quelque chose de complexe ici!" . Oui, je sais que les parenthèses n'aident pas à la lisibilité, mais ces conditions devraient apparaître assez rarement, et quand elles apparaîtront, vous devrez quand même vous arrêter et les lire attentivement (car elles sont complexes ).
Quoi qu'il en soit, juste deux autres propositions que je n'ai pas vues ici. J'espère que cela aide quelqu'un :)
pep8
critères du package. Lepep8
du paquet de # 126 question est de fixer le paquet à suivre strictement les spécifications de pep8. La discussion sur le problème comprend quelques suggestions de style également vues ici.