如何在Python文件中强制使用“空格”或“制表符”?
在Python中,有没有办法在每个文件的基础上强制使用空格或制表符缩进呢?
嗯,也许说“强制”有点太过了,更像是“建议”。
我总是收到混合缩进的补丁文件,这真让人烦……(至少可以这么说)Python本身能识别出问题,但我在寻找一种方法,可以在编辑器层面上做到这一点,就像字符集的设置一样。
编辑:好吧,我的问题不太清楚,我之所以问这个,是因为我不断收到各种混合的制表符和空格的修正和补丁。 我使用的是Mercurial作为分布式版本控制系统,也许在这个层面上有什么办法?
5 个回答
这件事应该由你的编辑器来帮你处理。大多数编辑器(比如 Notepad++,它是免费的)都允许你设置按下 Tab 键是输入一个制表符还是输入几个空格。我建议在所有文件中使用两个空格,而不是 Tab 键(我觉得四个空格太多了)。使用空格而不是 Tab 键更好,因为这样你可以用空格和 Tab 键来缩进,而不用担心会搞乱你的文件。
如果你的文件中混合了这两种情况,写一个小脚本把 Tab 转换成空格也不难。
看看这个 tabnanny
模块:它可以帮助你发现代码中不明确的缩进问题。
Tim Peters 写了一个很实用的脚本,叫做 reindent.py,这个脚本可以把 .py 文件中的缩进转换成使用4个空格,而不使用制表符(Tab)。你可以在 这里找到它,不过最好先检查一下你的系统里有没有这个工具,它可能已经包含在某个示例或工具目录里了。(在最新的 LTS Ubuntu 系统中,它是通过 python2.7-examples
这个包提供的。)
如果你能设置 Mercurial 的钩子(hook),那么你就可以把所有文件都通过 reindent.py 处理一遍。
顺便提一下,如果你在使用 Unix 系统,你的系统可能也有 expand
和 unexpand
这两个命令,它们可以把所有的制表符转换成空格(或者把空格转换成制表符)。不过在这种情况下,我觉得 reindent.py
是更合适的工具。