无论我以哪种方式编写以下函数都会引发错误。
@staticmethod
def _generate_clone_spec(param1=None,
param2=None,
param3=None,
param4=False,
param5=False):
根据PEP8上面的代码是对齐函数中参数的可接受的方法。
但是上面的代码会抛出以下错误:
缩进包含混合空格和制表符
如果我将所有空格转换为制表符,那么它看起来像这样:
@staticmethod
def _generate_clone_spec(param1=None,
param2=None,
param3=None,
param4=False,
param5=False):
在上面的代码中,混合空格和制表符错误消失了,但随后我违反了一个新错误:视觉缩进的连续行过度缩进(E127)
据我所知,如果我按照以下方式编写函数,它符合这两个规则,但是还有其他方法吗?
@staticmethod
def _generate_clone_spec(
param1=None,
param2=None,
param3=None,
param4=False,
param5=False):
最佳答案
回答
使用空格。然后使用第一个示例,但只有且只有空格。停止虔诚地追随 pep8。我们不再有 80 个字符宽的监视器,让代码看起来更好一点也不是一件可怕的事情,特别是当它在语法上是正确的并且在这种情况下空格无关紧要时。
推理
免责声明:这是我提出的,本质上,这是我个人的观点。
在决定是否在任何类型的编程项目中使用制表符或空格时,我从未见过更好的“规则”,但这个:
如果您通过用空格填充代码来格式化代码,那么无论您如何看待,客观上仅使用空格都是最佳决定。
否则,这就是您喜欢的任何内容。
这不仅可以避免 Python 中的“mIxEd tAbS n space”错误,还可以避免混淆为什么按键盘上的回车键会使光标不稳定地随机跳转空格数。
如果用空格填充并使用空格,您将始终拥有...空格。
如果你不按空格填充,而是使用制表符...你将始终让返回按钮向后跳 n 个空格。
其他一切都是疯狂的。
忘记 pep8。只要在你自己的代码中保持一致,我们可能会整天讨论这个问题,但永远不会想出如何正确缩进。
关于python - pep8 "mixed spaces and tabs"错误与 "under-indented for visual indent"冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57345191/