4

在 Python 中,是否有一种方法可以强制使用每个文件的空格或制表符缩进?

好吧,也许“执行”太强了,更像是“建议”。

我不断收到带有混合缩进的补丁文件,这很烦人......(至少可以说)Python本身可以判断何时出现问题,但我正在编辑器级别搜索一些东西来做到这一点,就像它存在于字符集一样.

编辑:好的,我的问题不清楚,我之所以这么问,是因为我不断收到您可以想象的任何选项卡/空格组合中的更正和补丁。我正在使用 Mercurial 作为 DVCS,也许这个级别存在一些东西?

4

4 回答 4

9

Tim Peters 编写了一个名为reindent.py的漂亮脚本,它将 .py 文件转换为使用 4 空格缩进并且没有制表符。它在此处可用,但请先检查您的发行版——它可能已捆绑在示例或工具目录中。(在最新的 LTS Ubuntu 上,它由python2.7-examples软件包提供。)

如果您可以设置 Mercurial 挂钩,您应该能够通过 reindent.py 运行所有文件。

顺便说一句,如果您使用的是 unix,那么您的系统可能还有expand(and unexpand) 命令,它将所有制表符转换为空格(并将空格转换为制表符)。但是,在这种情况下,我认为reindent.py是正确的工具。

于 2010-03-22T10:50:34.120 回答
5

查看tabnanny模块: — 模棱两可的缩进检测。

于 2010-03-22T08:12:38.457 回答
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

要在编辑级别回答,这取决于编辑,请注明!

于 2010-03-22T09:00:22.030 回答
2

这是你的编辑应该为你做的事情。大多数编辑器(例如,试试 Notepad++,它是免费的)会让您设置按制表符是输入制表符还是空格数。我建议在所有文件中使用两个空格而不是制表符(我发现 4 太多了)。使用空格而不是制表符更好,因为这意味着您可以使用空格键和制表键缩进内容,而不必担心弄乱文件。

如果您有混合文件,那么编写自己的脚本将制表符转换为空格并不难

于 2010-03-22T08:13:25.557 回答