我有下面的,相当大的条件已经嵌套了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:
发布于 2018-06-07 03:52:41
无论是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
https://stackoverflow.com/questions/50516538
复制相似问题