PEP 666 – 拒绝愚蠢的缩进
- 作者:
- Laura Creighton <lac at strakt.com>
- 状态:
- 已拒绝
- 类型:
- 标准跟踪
- 创建日期:
- 2001-12-03
- Python 版本:
- 2.2
- 发布历史:
- 2001-12-05
摘要
大家都认为混用制表符和空格是个坏主意。有些人想要更多。我建议我们让人们定义他们想要的任何 Python 行为,这样它只会按照他们喜欢的方式运行,而不会按照他们不喜欢的方式运行。我们将通过一个命令行开关来实现这一点。格式不符合程序员期望的程序将引发 IndentationError。
python -TNone在存在任何制表符时将拒绝运行。python -Tn在制表符不等于n个空格时将拒绝运行。python -TOnly在块的缩进不是制表符时将拒绝运行。
混用制表符和空格的人们自然会发现他们的程序无法运行。唉,我们还没找到远程给他们像牛鞭一样的电击的方法。(不过,如果有人找到了这样做的方法,我很乐意将此选项添加到 PEP 中。)
基本原理
Python-list@python.org(又名 comp.lang.python)周期性地充斥着关于制表符和空格的讨论。鉴于 Python 中的缩进在语法上很重要,这不可避免。这从未解决任何问题,只会让不同的人感到沮丧和愤怒。最终,他们开始互相说粗鲁的话,这对我们所有人来说都很 sad。而且,他们浪费宝贵的时间,这些时间本可以用来用 Python 创造东西,这也令人 sad。此外,从公关角度来看,这对于整个 Python 社区来说非常不幸。那些不发布关于制表符和空格内容的人(不出所料)是看不见的,而那些发布内容的人则让我们其他人看起来有些愚蠢。
问题在于,没有礼貌的方式来说“停止浪费你和我宝贵的时间”。那些已经处于争吵中的人不太可能相信你是出于对他们的同情而行动,并且完全有理由坚持他们自己的时间是他们可以随意支配的。他们像苍蝇一样陷入了这场糟糕的争论中,显而易见,他们无法脱身,否则早就脱身了。
但今天我不得不花时间清理我的键盘,因为“n”键卡住了。所以,除了对这些人感到同情之外,我还很恼火。我想,如果我们制定了这个 PEP,然后我们可以请 Guido 快速拒绝它,那么当这场争论再次开始时,我们可以说“Guido 不会为了迎合制表符讨厌者或仅限制表符者而改变事情,所以这场谈话是在浪费时间。”然后每个人都可以平静地相信:a) 他们是正确的,b) 其他人是傻瓜,c) 他们非常幸运不必和白痴分享一个实验室(这是争论者现在就可以做的,但显然已经忘记了)。
然后 python-list 可以回到担心它是否过于自以为是,而不是担心它对新人是否过于敌对。也许有人能花点时间向我解释一下,在 2.2 的非经典类中 __getattr__ 和 __getattribute__ 之间有什么区别,这个问题我愚蠢地在当前的制表符线程中间发布了。我想知道这个问题的答案 [1]。
如果这个提议被接受,可能会需要大量的劳动力。但既然我不想它被接受,我也不在乎。
参考资料
版权
本文档已置于公共领域。
来源:https://github.com/python/peps/blob/main/peps/pep-0666.rst