根据PEP8 / flake8

时间:2017-07-25 23:04:01

标签: python indentation pep8

问题是如何在使用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()函数中使用多少参数。所以一旦我达到了线路限制,我就会重新安排一下。

这显然适用于所有延续。这是否意味着最干净的解决方案是尽快打破每一行的线路,在第一次写入时不能说最终长度,或者是否有另一种解决方案。

选项卡和空格不得混合使用。

所以现在我问自己什么是立法艺术来处理延续线?

2 个答案:

答案 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

因此,如果您正在编写新代码并希望遵守标准,那么只需使用空格。