Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:使用4个空格进行缩进。为什么?_Python_Indentation_Conventions_Pep8 - Fatal编程技术网

Python:使用4个空格进行缩进。为什么?

Python:使用4个空格进行缩进。为什么?,python,indentation,conventions,pep8,Python,Indentation,Conventions,Pep8,在编写python时,我只使用了2个空格来缩进,当然我真的建议使用4个空格,但从历史上看,这对我来说是不寻常的 有人能说服我用4个空格代替2个吗?赞成和反对意见是什么 最后,什么是将所有现有的代码库从2个空格转换为4个空格的简单方法 p.p.S.PEP-8还强烈建议不要使用标签进行缩进 因此,总结一下: 优点: 当缠绕长度超过80行的绳子时,有更多的空间来排列 可以从代码片段中复制代码,并且它可以正常工作 缺点: 有了更深层次的嵌套语句,实际代码的空间就更少了 谢谢。如果您是处理源文

在编写python时,我只使用了2个空格来缩进,当然我真的建议使用4个空格,但从历史上看,这对我来说是不寻常的

有人能说服我用4个空格代替2个吗?赞成和反对意见是什么

最后,什么是将所有现有的代码库从2个空格转换为4个空格的简单方法


p.p.S.PEP-8还强烈建议不要使用标签进行缩进


因此,总结一下:

优点:

  • 当缠绕长度超过80行的绳子时,有更多的空间来排列
  • 可以从代码片段中复制代码,并且它可以正常工作
缺点:

  • 有了更深层次的嵌套语句,实际代码的空间就更少了

谢谢。

如果您是处理源文件的唯一编码人员,并且没有强制执行特定样式的编码标准,请使用您喜欢的任何代码。就我个人而言(与我们的编码标准一致),我使用硬标签,以便查看代码的人可以使用他们自己的偏好

要进行更改,只需将所有行首空间更改为两倍大的行首空间。有很多方法可以做到这一点;在Vim文本编辑器中,我可以想到两个方面:首先:

:%s/^\(\s\{2}\)\+/\=repeat(' ', len(submatch(0))*2)
这是一个简单的正则表达式,它在行首查找一对或多对空格,并将它们替换为找到的空格数的两倍。通过以下方式打开vim,可以将其扩展为执行所有文件:

vim *.py
(或同等标准),然后是(未经测试):

或者:

" 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
这样的工具不能很容易做到这一点,我会感到惊讶。

识别和通用编码风格标准因语言、项目而异。采用编码风格标准有一个原因:无论是谁编写的,代码看起来都是统一的。这提高了项目的易读性,坦率地说,它看起来更好

当采用编码样式标准时,有一个原因是无效的:因为您喜欢它。编码标准的存在正是因为人们的偏好不同,如果任由他们自己选择,混乱就会接踵而至,对所有人都不利

如果你只为自己编写代码,没有人会读,那就去写你喜欢的东西吧。否则,遵循社区公认的标准将使您的代码更符合其他人的眼光。还要记住,如果您决定将来为社区贡献代码,那么如果您已经习惯了他们的编码风格,您将有一个更轻松的时间

至于更改选项卡大小,有许多支持Python的源代码格式化程序,大多数程序员的编辑器和IDE也具有此功能。您可能已经有了它,只需查阅您正在使用的编辑器的文档即可。

没有“更好”的缩进。这是一个宗教圣战主题。四是好的,因为它足以使缩进清晰,但不会太多,你的整个屏幕大部分是空白,你必须水平滚动阅读一半的程序

它还有一个优点,就是它是一个“半选项卡”,与“选项卡”的历史定义不同

除此之外,使用你的团队喜欢的任何东西。就像巧克力和香草

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


使用python脚本也很容易。只需数一数所有的前导空格,然后在行首加上同样数量的空格,然后写出来。

政治公众人物不是你的老板。如果它已经是一致的2-空格缩进,那么就没有理由更改所有代码以符合它。如果你真的认为这很重要的话,你可以继续下去,但是,坦率地说,我不这么认为。无论你(和你的同事)在阅读和写作方面都能获得最大的舒适感,你最好还是按照惯例去做。

其他人都使用4个空格。这是使用我遇到并接受的4个空格的唯一原因。在我心中,我仍然希望使用制表符(每缩进1个缩进字符,有意义,没有?将缩进与其他空格分开。我不在乎制表符可以显示为不同的宽度,这没有语法上的区别。最糟糕的情况是,一些注释没有对齐。可怕!)但是我已经接受了,因为python社区作为一个整体使用4个空间,所以我使用4个空间。这样,我就可以从别人编写的代码片段中汇编代码,而且一切都正常。

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

标签显然更好:

  • 它几乎不可能有不一致的缩进(我见过代码通常有4个空格的缩进,但有些部分恰好有一个空格,很难通过简单的检查判断是否有7或8个空格…制表符不会出现这种情况,除非将tabstop设置为1个空格)
  • 选项卡是缩进的逻辑语义表示,它允许您(和任何其他开发人员)选择显示您想要的任意多的“空格”(或者更确切地说是列),而不影响其他人的偏好
  • 如果碰巧手头只有“记事本”(或其他虚拟编辑器),则按键次数也会减少
  • 添加和删除选项卡是一种对称的操作。大多数IDE在点击Tab键时可能会自动插入4个空格,但通常它们在敲击退格时只删除1个空间(未缩进操作仍然可以作为Shift选项卡访问,但这是两个键组合),或者使用鼠标在缩进中间单击并删除一个字符。
  • 他们不会
    " 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
    
    def·foo():
    ····pass
    
    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