2010-12-14 57 views
0

许多教程建议用户使用宽度为4的制表符,而使用空格而不是制表符制作制表符。使用真正的标签也起作用,为什么人们建议使用4的空格而不是真正的标签?我是一个Python初学者困惑?Python制表符假或真

[更新] 谢谢!我现在切换到4

添加空格之后我的.vimrc “巨​​蟒

au BufRead,BufNewFile *.py,*pyw set shiftwidth=4 
au BufRead,BufNewFile *.py,*.pyw set expandtab 
fu Select_c_style() 
    if search('^\t', 'n', 150) 
     set shiftwidth=8 
     set noexpandtab 
    el 
     set shiftwidth=4 
     set expandtab 
    en 
endf 

对于其他情况:

set noexpandtab    " tabs are tabs, not spaces 
+2

可能重复[Tabs versus spaces in Python programming](http://stackoverflow.com/questions/119562/tabs-versus-spaces-in-python-programming) – katrielalex 2010-12-14 15:38:23

回答

1

只要允许将制表符放入文件中,最终会出现混合制表符和空格的情况,然后您将开始解析错误。当多个人在进行项目时,这种情况会变得更糟,并且他们的间距设置会彼此不同。

PEP8建议“4位”:http://www.python.org/dev/peps/pep-0008/

而且这一建议与经验制成,对付各种各样的问题,这些问题在Python混合制表符和空格带来的。更好地保存你自己的痛苦,并为你的Python代码使用4个空格。

+0

由于我的文本编辑器一直没有得到混合制表符和空格的情况正确地指示不要混合它们。鉴于非脑死亡编辑器,选项卡并不难以正确使用,而且整个问题的关键是允许人们“让它们的间距设置不同” - 查看具有使其具有最高可读性的缩进量的代码为他们 - 没有实际改变文字。我使用各种编程语言缩进标签,并将它们设置为2个空格,因为这对我来说很合适。但显然这是全部的异端。 – 2010-12-14 15:43:24

+0

我更喜欢2个空格的tabstop。 – MattH 2010-12-14 16:00:18

2

Python的编译器将认为制表符是等价的如果你喜欢,你可以使用制表符,但是混合制表符和空格将导致棘手的调试错误,这就是为什么建议使用空格的原因。

+0

顺便说一句,你应该看看'tabnanny '模块,如果你认为你可能会遇到混合标签和空格的问题。 – 2010-12-14 15:50:36

+2

Python 3更改规则。现在禁止在同一缩进中混合制表符和空格,并导致解释器出现此错误:“TabError:缩进中制表符和空格的使用不一致” – 2010-12-14 21:24:25

1

我可以考虑的唯一原因可能是,如果您没有将编辑器设置为使用tabstop=4(例如,在VIM中),您的代码行将会更长,并且读取这样的代码会很不方便。唯一的规则应该不是混合制表符和空格,我认为(我看过代码中单缩进是四个空格,双缩进是一个制表符,这太可怕了。)

+0

IIRC,Visual Studio将默认设置一个4格缩进,但会自动用制表符替换8个空格组,同时将它们显示为8个空格宽。也许这些不是默认设置,但我已经看到了很多格式化的代码。这是可耻的。我真的不明白为什么正确使用标签对于很多人来说显然是如此困难,以至于他们完全被劝阻。 – 2010-12-14 15:45:21

+0

@Karl我喜欢使用制表符,因为项目中的每个人都可以让她/他的编辑器根据需要显示它(2,4或8个空格)。 – khachik 2010-12-14 15:47:18

+1

或3或5或...我不认为我会理解这些人,但我不会歧视他们。 :) – 2010-12-14 15:48:48

1

许多编辑器,如果不是大多数将制表符内联转换为用户定义的空间数量。设置为4,你是免费的家。真正的痛苦来自当你在一个团队中没有标准化4个空间的想法时。