在Python中,是否有意图在每个文件的基础上强制使用空格或制表符缩进?
嗯,也许“强制执行”太强大了,更像是“推荐”。
我一直收到带有混合缩进的补丁文件,这很烦人......(至少可以说)Python本身可以判断什么时候出现问题,但是我正在搜索某些东西,在编辑器级别这样做,就像它存在一样为了charset。
编辑:好的,我的问题不明确,我问这个是因为我在你可以想象的任何标签/空间混合中不断收到更正和补丁。我使用Mercurial作为DVCS,也许这个级别存在什么东西?
答案 0 :(得分:10)
python2.7-examples
包提供。)
如果您可以设置Mercurial挂钩,则应该能够通过reindent.py运行所有文件。
顺便说一下,如果你使用的是unix,那么你的系统也可能有expand
(和unexpand
)命令,它将所有选项卡转换为空格(以及空格到选项卡)。但是,在这种情况下,我认为reindent.py
是正确的工具。
答案 1 :(得分:5)
查看tabnanny
模块: - 检测模糊缩进。
答案 2 :(得分:2)
这是您的编辑应该为您做的事情。大多数编辑器(例如,尝试使用Notepad ++,它是免费的)将允许您设置击中标签是否输入制表符或多个空格。我建议在所有文件中使用两个空格而不是tab(我发现4太多了)。使用空格而不是制表符更好,因为这意味着您可以使用空格和空格来缩进内容。标签键,无需担心弄乱文件。
如果您有混合文件,那么编写自己的脚本以将标签转换为空格并不困难
答案 3 :(得分:2)
如PEP 8中所述,请勿混合制表符和空格。但是,两者都可以运行... 正如它所说:
The most popular way of indenting Python is with spaces only. The second-most popular way is with tabs only. Code indented with a mixture of tabs and spaces should be converted to using spaces exclusively. When invoking the Python command line interpreter with the -t option, it issues warnings about code that illegally mixes tabs and spaces. When using -tt these warnings become errors. These options are highly recommended!
因此,解决方案默认使用:
python -t my_mixed_code.py
要在编辑层面回答,这取决于编辑,请注明!