我有以下,相当大的条件已嵌套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:
答案 0 :(得分:0)
没有括号,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