的Python:使用4个空格缩进。 为什么? [关闭](Python: using 4 spa

2019-06-25 21:40发布

虽然编码蟒蛇,我只用2个空格来缩进,确保PEP-8真的建议有4位,但在历史上对我来说是不寻常的。

所以,任何人都可以说服我使用4个空格,而不是2? 有什么利弊?

PS最后,有什么简单的方法来所有现有的代码库转换从2位到4位?


PPS PEP-8也srictly建议不要使用标签的缩进。 读到这里


因此,要总结:

优点:

  • 有更多的空间包木窗字符串时,80条多线长的安排。
  • 可以从片段复制代码,它就可以工作。

缺点:

  • 随着嵌套语句的更深层次的你有实际的代码更小的空间。

谢谢。

Answer 1:

其他人都使用了4个空格。 这是使用4个空格,我已经遇到和接受的唯一原因。 在我的心脏,我还是想用标签(每个缩进1个压印字符,是有道理的,不是吗?从其他空格分开缩进。我不关心标签可以显示为不同的宽度,这使得任何语法差异,最差可能发生的是,一些意见不排队,恐怖!),但我已经接受,既然Python社区作为一个整体使用4个空格,我用4个空格。 这样一来,我可以从其他人写的片段汇编代码,而这一切的作品。



Answer 2:

我喜欢这样的事实四个空格字符很好地缩进功能的内码,因为DEF +一个空间让四个大字。

def·foo():
····pass


Answer 3:

我认为真正的问题是,为什么空格,而不是制表符。

标签显然更好:

  • 这使得几乎不可能有不一致的缩进 (我已经看到了通常有4个空格缩进的代码,但后来一些地方正好是一个空间了,这是很难通过简单的检查,以判断是否有7个或8个空格......这不会与标签发生,除非你的制表位设置为1米的空间)。
  • 标签是缩进逻辑语义表示,它可以让你(以及任何其他开发者)选择显示尽可能多的“空间”(或者更确切地说,列)你想不与其他人的喜好搞乱。
  • 这也是少的按键 ,如果你碰巧有只“记事本”(或其他虚拟编辑器)在眼前。
  • 添加和删除标签是对称的操作。 击中TAB键时,大多数IDE的可插入自动4位,但通常它们打回退时,只删除1个空间(取消缩进操作仍Shift-Tab键访问,但是这两个组合键),或者你用鼠标点击在凹陷的中部和删除一个字符。
  • 他们只需要1个字节,而不是4(乘以千行,你节省几KB:P)
  • 你有一个解决的协议少的事情,因为如果你决定去的空间,然后讨论再次开始选择(虽然共识似乎是四左右)有多少。

的空间优势:

  • Guido喜欢他们。
  • 你不能简单的在这里键入一个标签,它的焦点(尽管你可以贴一个)转移。


Answer 4:

有没有“更好”的压痕。 这是一个宗教圣地战的话题。 四是不错的,因为它足以让压痕清晰,但没有这么多,你的整个屏幕大多是空白的,你必须水平滚动阅读一半的计划。

它也有被“半片” W / R到的历史定义上攻“标签”。

除此之外,使用任何你喜欢的组。 这就像巧克力与香草。

一个简单的方法来切换是使用具有标签和空间选项卡支持的编辑器。 转换所有前导空格,制表符标签,标签大小设置为四个,然后转换导致的标签回太空的选项卡。

很容易用python脚本做太多。 仅计算所有前导空格,那么同样的量添加到行的开头,它写回。



Answer 5:

该PEP是不是你的老板。 如果它已经持续2空间缩进,没有理由去改变所有的代码,以符合它。 你能跟上前进,如果你真的认为这是非常重要的,但是,坦率地说,我不知道。 你最好不要与任何约定提供你(和你的同事),最舒适的享受无论是在阅读和写作下去。



Answer 6:

任何像样的编辑器(Emacs的,VIM)将抽象的这整个废话了你。 这将同样良好地工作用空格或标签,并且它可以被配置为使用任意数量的空格(或对于制表符任意数量的空间宽度)。 它也可以在不同格式之间进行转换没有太多的麻烦(参见:retab在vim的命令)。

如果你想源格式转换散装的,我建议你看一看的缩进工具。

这就是说,我无法抗拒回答其他问题...我的喜好一直是标签,因为它绕过了整个问题,每个人都可以查看与设置在他们认为合适的宽度的源代码。 它也少了很多打字,当你在不与转换是有帮助的编辑正在努力。 至于2比4个空格,这是纯粹的化妆品。



Answer 7:

另外的一个原因是:当你有一些长行(超过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


Answer 8:

如果你是唯一的编码器工作在你的源文件,并有强制执行一个特定的风格,使用任何你感到满意,没有编码标准。 个人(并与我们的编码标准),我使用硬标签,这样不管是谁在看代码可以使用自己的偏好。

要做出改变,你只需要启动所有的行空间更改为那些有两倍大。 有很多方法可以做到这一点; 在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

当然,许多其他工具将提供类似的功能:我会感到惊讶,如果是这样sedawkperlpython不能这样做很容易。



Answer 9:

Identation和一般的编码风格的标准不尽相同语言的语言,项目与项目之间。 还有一个原因是采用的编码风格标准:使代码看起来均匀,不管是谁写的。 这改善了项目的易读性,而且,坦率地说,它看起来更好。

还有一个原因,采用一种编码风格标准时是无效的:因为你喜欢它。 编码标准存在,正是因为人们的喜好各不相同,如果留给自己,混乱将随之而来,所有的损害。

如果您正在为自己单独编写代码,这是任何人都不会读,继续写任何你喜欢的。 否则,按照你的社区的公认标准将会使你的代码更认同其他人的眼睛。 请记住,那就是,如果你决定在未来贡献代码到一个社区,你就会有一个更简单的时间,如果你使用自己的编码风格了。

为改变标签大小,还有很多源代码格式化那里支持Python和大多数程序员的编辑器和IDE也有这个能力。 你可能有它已经,它只是咨询您所使用的编辑文档的问题。



Answer 10:

其中一个原因是,如果你使用更少的空间进行缩进,你就能够更加巢语句(因为线路长度通常限制为80个)。

现在,我敢肯定,一些人仍然不同意许多嵌套结构应该如何最大。



Answer 11:

这是比较容易在视觉上识别与4位长嵌套代码块。 调试时节省时间。



Answer 12:

如果你想与其他程序员一起编写Python代码,如果你使用不同的缩进为他们成为一个问题。 大多数Python程序员倾向于使用4空间缩进。



Answer 13:

使用4位或2位是完全由你决定。 4位仅仅是一个惯例。 什么是最重要的,不要混用制表符和空格。 使用空格键



文章来源: Python: using 4 spaces for indentation. Why? [closed]