如何使用续行超出缩进的可视缩进?

16

我正在努力修复这段代码,使其符合PEP8的指南。我尝试使用反斜杠断开行并用括号括起来。此外,我确保第二行代码紧随第一个右括号之后。

    if (len(self._stools[origin]) > 0 and len(self._stools[dest]) and
        self.top_cheese(origin).size > self.top_cheese(dest).size):
        raise IllegalMoveError

因此,每次我在这段代码上运行pep8.py时,都会得到以下结果:

TOAHModel.py:94:14: E127 continuation line over-indented for visual indent

1个回答

19

我猜您正在遇到“连续行与下一个逻辑行没有区别”的问题。解决方法是将第二行再缩进一次 -

if (len(self._stools[origin]) > 0 and len(self._stools[dest]) and
        self.top_cheese(origin).size > self.top_cheese(dest).size):
    raise IllegalMoveError
原因在于self.top_cheese(origin).sizeraise IllegalMoveError处于相同的缩进级别,这可能会让读者感到困难,因为很难确定if语句何时结束以及if语句内实际块开始的位置。你可以说这看起来并不好,但事实就是这样。

1
非常感谢您的清楚解释!现在它符合PEP8的要求了! :) - wonggr
1
现在看起来 self._stools[origin] ... self.top_cheese(dest).size) 是作为参数传递给 len 的表达式。=/ - jamesdlin
呵呵,我肯定会争辩说它看起来并没有好多少! - grasshopper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接