虽然编码蟒蛇,我只用2个空格来缩进,确保PEP-8真的建议有4位,但在历史上对我来说是不寻常的。
所以,任何人都可以说服我使用4个空格,而不是2? 有什么利弊?
PS最后,有什么简单的方法来所有现有的代码库转换从2位到4位?
PPS PEP-8也srictly建议不要使用标签的缩进。 读到这里
因此,要总结:
优点:
- 有更多的空间包木窗字符串时,80条多线长的安排。
- 可以从片段复制代码,它就可以工作。
缺点:
- 随着嵌套语句的更深层次的你有实际的代码更小的空间。
谢谢。
虽然编码蟒蛇,我只用2个空格来缩进,确保PEP-8真的建议有4位,但在历史上对我来说是不寻常的。
所以,任何人都可以说服我使用4个空格,而不是2? 有什么利弊?
PS最后,有什么简单的方法来所有现有的代码库转换从2位到4位?
PPS PEP-8也srictly建议不要使用标签的缩进。 读到这里
因此,要总结:
优点:
缺点:
谢谢。
其他人都使用了4个空格。 这是使用4个空格,我已经遇到和接受的唯一原因。 在我的心脏,我还是想用标签(每个缩进1个压印字符,是有道理的,不是吗?从其他空格分开缩进。我不关心标签可以显示为不同的宽度,这使得任何语法差异,最差可能发生的是,一些意见不排队,恐怖!),但我已经接受,既然Python社区作为一个整体使用4个空格,我用4个空格。 这样一来,我可以从其他人写的片段汇编代码,而这一切的作品。
我喜欢这样的事实四个空格字符很好地缩进功能的内码,因为DEF +一个空间让四个大字。
def·foo():
····pass
我认为真正的问题是,为什么空格,而不是制表符。
标签显然更好:
的空间优势:
有没有“更好”的压痕。 这是一个宗教圣地战的话题。 四是不错的,因为它足以让压痕清晰,但没有这么多,你的整个屏幕大多是空白的,你必须水平滚动阅读一半的计划。
它也有被“半片” W / R到的历史定义上攻“标签”。
除此之外,使用任何你喜欢的组。 这就像巧克力与香草。
一个简单的方法来切换是使用具有标签和空间选项卡支持的编辑器。 转换所有前导空格,制表符标签,标签大小设置为四个,然后转换导致的标签回太空的选项卡。
很容易用python脚本做太多。 仅计算所有前导空格,那么同样的量添加到行的开头,它写回。
该PEP是不是你的老板。 如果它已经持续2空间缩进,没有理由去改变所有的代码,以符合它。 你能跟上前进,如果你真的认为这是非常重要的,但是,坦率地说,我不知道。 你最好不要与任何约定提供你(和你的同事),最舒适的享受无论是在阅读和写作下去。
任何像样的编辑器(Emacs的,VIM)将抽象的这整个废话了你。 这将同样良好地工作用空格或标签,并且它可以被配置为使用任意数量的空格(或对于制表符任意数量的空间宽度)。 它也可以在不同格式之间进行转换没有太多的麻烦(参见:retab
在vim的命令)。
如果你想源格式转换散装的,我建议你看一看的缩进工具。
这就是说,我无法抗拒回答其他问题...我的喜好一直是标签,因为它绕过了整个问题,每个人都可以查看与设置在他们认为合适的宽度的源代码。 它也少了很多打字,当你在不与转换是有帮助的编辑正在努力。 至于2比4个空格,这是纯粹的化妆品。
另外的一个原因是:当你有一些长行(超过80个符号),并希望它在2分割,你将有只有1空间缩进,这是一个有点混乱:
if code80symbolslong and somelongvariablegoeshere and somelongerthan80symbols \
and someotherstatementhere:
# some code inside if block
pass
if code80symbolslong and somelongvariablegoeshere and somelongerthan80symbols \
and someotherstatementhere:
# some code inside if block
pass
如果你是唯一的编码器工作在你的源文件,并有强制执行一个特定的风格,使用任何你感到满意,没有编码标准。 个人(并与我们的编码标准),我使用硬标签,这样不管是谁在看代码可以使用自己的偏好。
要做出改变,你只需要启动所有的行空间更改为那些有两倍大。 有很多方法可以做到这一点; 在Vim的文本编辑器,我可以想到两个:首先:
:%s/^\(\s\{2}\)\+/\=repeat(' ', len(submatch(0))*2)
这是一个简单的正则表达式,看起来为一个或多个对空间在该行的开端,以两倍的空格替换它们的发现。 它可以扩展由开VIM做的所有的文件:
vim *.py
(或等同物),接着(未测试):
:argdo %s/^\(\s\{2}\)\+/\=repeat(' ', len(submatch(0))*2)/ | w
或者:
" Switch to hard tabs:
:set noexpandtab
" Set the tab stop to the current setting
:set tabstop=2
" Change all spaces to tabs based on tabstop
:retab!
" Change the tab stop to the new setting
:set tabstop=4
" Go back to soft tabs
:set expandtab
" Replace all the tabs in the current file to spaces
:retab
当然,许多其他工具将提供类似的功能:我会感到惊讶,如果是这样sed
, awk
, perl
或python
不能这样做很容易。
Identation和一般的编码风格的标准不尽相同语言的语言,项目与项目之间。 还有一个原因是采用的编码风格标准:使代码看起来均匀,不管是谁写的。 这改善了项目的易读性,而且,坦率地说,它看起来更好。
还有一个原因,采用一种编码风格标准时是无效的:因为你喜欢它。 编码标准存在,正是因为人们的喜好各不相同,如果留给自己,混乱将随之而来,所有的损害。
如果您正在为自己单独编写代码,这是任何人都不会读,继续写任何你喜欢的。 否则,按照你的社区的公认标准将会使你的代码更认同其他人的眼睛。 请记住,那就是,如果你决定在未来贡献代码到一个社区,你就会有一个更简单的时间,如果你使用自己的编码风格了。
为改变标签大小,还有很多源代码格式化那里支持Python和大多数程序员的编辑器和IDE也有这个能力。 你可能有它已经,它只是咨询您所使用的编辑文档的问题。
其中一个原因是,如果你使用更少的空间进行缩进,你就能够更加巢语句(因为线路长度通常限制为80个)。
现在,我敢肯定,一些人仍然不同意许多嵌套结构应该如何最大。
这是比较容易在视觉上识别与4位长嵌套代码块。 调试时节省时间。
如果你想与其他程序员一起编写Python代码,如果你使用不同的缩进为他们成为一个问题。 大多数Python程序员倾向于使用4空间缩进。
使用4位或2位是完全由你决定。 4位仅仅是一个惯例。 什么是最重要的,不要混用制表符和空格。 使用空格键