Python程序员是否发现空白问题不便?[关闭]


11

许多程序员在初次接触Python时立即被空白的重要性所困扰。我听到过种种不方便的原因,但我从未听过Python程序员的抱怨。

当然,由于我在Java世界中度过了自己的职业生涯,因此我并没有遇到很多Python程序员。

因此,我的问题是那些参与大型Python项目(超过3个月,使用Python作为主要语言)的人:您是否发现空白问题不便且持续令人讨厌?还是一旦进入流程便不是问题?

我不是在问这个问题,因为我赞成或反对Python,或赞成或反对使用空格。我碰巧喜欢Python,但是我从未将它用于任何大型应用。

如果您没有Python经验,请不要猜测。


2
他们会使用这种语言吗?我不会 令人讨厌/分散注意力的语法要求是可能使我为项目选择其他语言的事情之一(当然,假设我可以选择)。

从什么时候开始空格是个问题?:-)
Kugel

22
我们发现其他所有人不断提出来的做法很不方便。我们从来没有考虑过。
Winston Ewert

空格问题与几年前没有什么不同-OCCAM2具有很大的空格。没什么大不了的。
quick_now 2011年

4
我唯一一次发现的烦人之处是从网上复制粘贴代码时,这些代码是使用空格而不是制表符(反之亦然)编写的,从而导致字面上看不见的语法错误
Cameron

Answers:


14

在仅有的一种情况下,我发现空白令人讨厌,那就是在修改现有代码时,使得代码块必须比以前缩进更多(例如,if:在代码之前添加或删除)。使用C之类的语言编写时,只需添加if和一对大括号,然后(在Emacs中,或者我想象中的任何好的编辑器)按Tab即可让编辑器自动更正缩进。在Python中,您必须自己做。当然,有一些编辑器快捷方式可以自己完成,所以还算不错,但是冗余的损失确实给程序员带来了一些额外的负担。

总体而言,这是一个胜利,如果只是防止我的屏幕一半被如下行填充:

         }
      }
   }
}

1
在任何使用Python的合理的编辑器中,都有很简单的方法来重新插入代码块。在Wing IDE中,我只选择块并单击Tab(或Shift-Tab减小缩进级别)。
亚当·克罗斯兰

1
是的,在Emacs中,我选择了该块并点击C-c >C-c <。不过,您仍然必须自己做。换句话说,由于空格和代码逻辑不是多余的,因此您不能仅选择一个巨大的块并调用M-x indent-region(或使用您的编辑器的任何版本)“全部”缩进。
dfan 2011年

6
@Adam,一个好的编辑器,可以更轻松地更改您的缩进级别。但是,您可以使用大括号语言粘贴新代码,然后按自己喜欢的按键重新缩进文件。多田!缩进是正确的。在python中,您必须粘贴,选择,缩进/缩进。它虽然不多,但在括号方面还是有小小的胜利。
Winston Ewert

@Winston-必须是您的编辑器。如果您粘贴的代码本身正确地是缩进的,那么如果它在左右两边的距离太远了,则只需键入(SHIFT +)Tab即可相应地对齐它,这与敲击键无关。重新缩进文件。此外-您不得复制/粘贴代码:)
Ingo

1
@Winston:使用Tab和Shift-Tab时,即使Notepad ++缩进块也没有,我还没有找到vim的快捷方式,但是我想它还不够用:p
Matthieu M.

50

我喜欢Python的重要空白。对我来说,这是DRY语法上的完美示例。指示代码块在何处开始和结束的人类可读方式是缩进。如果希望代码可读,则无论语言如何,都必须缩进。使程序员两次指定此信息是愚蠢的,一次是给编译器/解释器,一次是给人类。此外,类似C的语言中的缩进类似于注释:旨在提高可理解性,但其含义并非由编译器/解释器强制执行,并且很容易与实际含义(括号内)不同步,混淆而不是澄清。


8
为“不要重复自己”而+1。优良作法是缩进代码以反映块结构,所以为什么还要有开始/结束标记?
Steve314

12

很大的空白实际上对我来说很方便。它使我的打字更少。它整洁而明确地格式化代码。因此,它使代码更具可读性。

(出于同样的原因,我也喜欢Haskell中的大量空白)。


1
我也会在Haskell空白中分享我的积极经验,但是FarmBoy坚持要有3个月的Python使用经验,其他都是猜测。:-)
Ingo

1
自1998年以来我在Python上的经验,所以我的回答很可能是合格的:)(很遗憾,我在Haskell上的经验要短得多。)
9000

@ 9000即使Haskell早于Python!:D
pradyunsg 2014年

8

当我第一次使用python时,空白是新事物,因此是一个令人讨厌的限制。

现在我什至没有注意到。我已经使用python 11个月了。


5

首先-我的面包和黄油语言是Python,SQL和Java。我喜欢Python的空白-语法和类型更少,它迫使人们编写清晰,整洁的代码。太太,我讨厌Java的冗长性,以至于我实际上使用Python生成了我必须用Java编写的所有样板,这给我所有对我的生产力感到惊讶的Java同事都印象深刻。

不过,最大的警告是从网络上复制/粘贴代码时-它通常会导致空格和制表符混合,这需要额外的步骤来清理,而且我通常只在运行时异常后才能捕获。


告诉您的编辑器使用语法突出显示选项卡作为错误有很大帮助-对于我highlight link RedundantSpaces Error | au BufEnter,BufRead * match RedundantSpaces "\t" | au BufEnter,BufRead * match RedundantSpaces "[[:space:]]\+$"在vimrc中使用的vim
Daenyth 2012年

4

如果程序员对空白的重要性感到恼火,那么他很可能不会成为python程序员。


1
我听过很多讲Python的人说他们在The Whitespace Thing(tm)上遇到了问题,但过了一会儿才喜欢上它。根据我的观察,似乎随着越来越多的人加入有关该主题的讨论,其中一个人讲这样一个故事的可能性越来越大。(编辑:第二个答案立即证明...)

@delnan,我可以订阅。
Ingo

3

我敢打赌,您会发现在空白处有问题的人与那些没有使用像Emacs这样的优秀程序员的文本编辑器(没有处理)的经验的人之间有很多重叠。

无论如何,一旦将Python内部化,就不再是问题了。实际上,它的简洁性和在屏幕上的占用空间很小,这对可读性具有很大的优势。由于我主要使用Python,因此我发现很难训练自己编写更多冗余的语言(例如Java和C#)。在已经缩进的代码周围放上括号,这使我的神经clear然。


3

对于实际的编码,这并不是完全不方便,但实际上是有益的(请参见dsimcha的答案)。

在处理不尊重领先空白的通信技术时(例如许多非面向编程的Web论坛,以及将Python代码嵌入其他语言(例如HTML模板语言)时),这可能会很烦人,即使我看到了与剥离Python中的缺陷相比,剥离前导空格的工具更多的是缺陷,的确是,两次表示代码结构的冗余语言能够更好地处理这种破坏性环境(因为您可以将代码粘贴到编辑器中并自动将代码粘贴到根据显式结构标记重新缩进,或者根本不在乎代码是否仅在执行而不是由人类读取。


2

我没有发现空白令人讨厌。我发现缺少或不一致的缩进在其他语言中非常令人讨厌。我知道此问题是样式要解决的问题之一。

Python不是我的主要语言之一。

我发现缩进中的制表符和空格有时很烦人。当将编辑器从一种编辑切换到另一种编辑,或编辑其他人编写的代码时,这可能会导致问题。解决起来通常很简单。


1
在python缩进中混合制表符和空格是通向地狱的最短途径:p
Matthieu M.

@Mattieu:肯定的,这就是我的烦恼。
BillThor 2011年

1

我来自C#/ Javascript / XBase,但顺序并不特殊,在使用Python的过程中,这根本不是我要考虑的问题。就像其他语言中的大括号一样,这就是它的工作原理,就像规则所说的那样放置东西,而干眼是我的态度。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.