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