问题是如何在使用TAB时根据PEP8正确分解线条。
所以这是一个相关的问题How to break a line in a function definition in Python according to PEP8。但问题是,只有当定义标题def dummy(
的长度是标签长度的整数倍时,这才能正常工作。
def tes(para1=x,
--->--->para2=y)
否则我最终会出现一个新的错误,并且flake8会抱怨错误E127或E128,因为它会像这样过度缩小或缩小:
缩进的E128
def test(para1=x,
--->--->para2=y)
过缩进
def te(para1=x,
--->--->para2=y)
flake8不抱怨的解决方案是:
def test(
--->--->para1=x,
--->--->para2=y
--->--->)
然而,当我编程时,我不一定事先知道我将在test()
函数中使用多少参数。所以一旦我达到了线路限制,我就会重新安排一下。
这显然适用于所有延续。这是否意味着最干净的解决方案是尽快打破每一行的线路,在第一次写入时不能说最终长度,或者是否有另一种解决方案。
选项卡和空格不得混合使用。
所以现在我问自己什么是立法艺术来处理延续线?
答案 0 :(得分:1)
我将原来的评论变成正式答案。
PEP-0008有一个关于是否使用Tabs or Spaces的部分,引用如下(我强调):
空格是首选的缩进方法。
选项卡应仅用于与代码保持一致 已经缩进了标签。
Python 3不允许混合使用制表符和空格来缩进。
Python 2代码缩进,标签和空格的混合应该是 转换为仅使用空格。
使用-t调用Python 2命令行解释器时 选项,它会发出有关非法混合标签和代码的警告 空间。使用-tt时,这些警告会出错。这些选项是 强烈推荐!
您遇到了标签问题,并且您没有说明您是否使用过Python2或3,但我建议您坚持使用PEP-0008指南。< / p>
你应该用4个空格替换文件/模块中的tab chars,并在缩进时专门使用空格。
警告:如果您打算使用shell命令为您执行此操作,请务必小心,因为某些命令可能很危险,并且会破坏字符串中的标签字符(即不仅仅是缩进标签)并且可以打破其他东西,比如存储库 - 特别是如果命令是递归的。
答案 1 :(得分:0)
PEP8非常明确:
标签或空格?
空格是首选的缩进方法。
选项卡应仅用于与已使用选项卡缩进的代码保持一致。
Python 3 禁止 [强调添加]混合使用制表符和空格进行缩进。
参考:python.org。
因此,如果您正在编写新代码并希望遵守标准,那么只需使用空格。