Я намагаюся знайти гідний спосіб зробити це також, тому я просто придумав ідею (а не срібну кулю, оскільки це в основному питання смаку).
if bool(condition1 and
condition2 and
...
conditionN):
foo()
bar()
Я знаходжу кілька достоїнств у цьому рішенні порівняно з іншими, які я бачив, а саме ви отримуєте рівно додаткові 4 проміжки відступу (bool), що дозволяють всім лініям розташовуватися вертикально, а тіло оператора if можна відрізати у чіткий (іш) спосіб. Це також зберігає переваги короткого замикання булевих операторів, але, звичайно, додає накладні витрати функціонального виклику, що в основному нічого не робить. Ви можете стверджувати, що будь-яка функція, що повертає свій аргумент, може використовуватися тут, а не bool, але, як я вже сказав, це лише ідея, і це, в кінцевому рахунку, справа смаку.
Досить смішно, коли я писав це і думав про "проблему", я придумав ще одну ідею, яка знімає накладні витрати функціонального виклику. Чому б не вказати, що ми збираємося ввести складний стан за допомогою додаткових парних дужок? Скажіть, ще 2, щоб дати приємний 2 пробіл проміжних умов щодо відношення до тіла оператора if. Приклад:
if (((foo and
bar and
frob and
ninja_bear))):
do_stuff()
Мені це подобається, тому що, коли ти дивишся на нього, в голові відразу дзвонить дзвін, який каже: "Ей, тут відбувається складна річ!" . Так, я знаю, що дужки не допомагають читати, але ці умови повинні з’являтися досить рідко, і коли вони з'являються, вам доведеться все одно зупинитись і уважно їх прочитати (адже вони складні ).
У будь-якому разі, ще дві пропозиції, яких я тут не бачив. Сподіваюсь, це комусь допоможе :)
pep8
критеріям пакета. Випускpep8
пакету № 126 полягає в тому, щоб виправити пакет, щоб суворо дотримуватися специфікації PEP8. Обговорення цього питання включає деякі стильові пропозиції, які також можна побачити тут.