Форматирование больших условий - PullRequest
0 голосов
/ 24 мая 2018

У меня есть следующие, довольно большие условные, уже вложенные 4 вкладки. Я не хочу создавать переменные-заполнители для снижения читабельности, но я также хочу соответствовать длине строки.

Что такое Pythonicспособ сгруппировать и разбить это условное до нескольких строк?

В формате if (a и b) или (c и d)

if self.container.name == 'bill' and self.container.box.chest.props.by_idnum 
    or self.container.name == 'steve' and self.container.box.trunk.props.by_idnum:

1 Ответ

0 голосов
/ 06 июня 2018

Ни yapf, ни autopep8 не очищают это без скобок.Но когда вы добавляете их, становится чище:

 % yapf code.py             
if (self.container.name == 'bill' and self.container.box.chest.props.by_idnum
        or self.container.name == 'steve'
        and self.container.box.trunk.props.by_idnum):
    pass

 % autopep8 code.py               
if (self.container.name == 'bill' and self.container.box.chest.props.by_idnum
        or self.container.name == 'steve' and self.container.box.trunk.props.by_idnum):
    pass

Если он подходит под 80 символов, я бы выбрал последнее.Если это все еще слишком долго, я бы подумал о переходе (a и b) в функцию.Как правило, это может быть предпочтительнее, поскольку тогда вы можете объяснить в коде - именем переменной - что означает (a и b).

Примечание. В этом случае он может быть еще чище:

if (self.container.name in ['bill', 'steve']
        and self.container.box.trunk.props.by_idnum):
    pass
...