为什么Python选择使用None而不是null?

10

Python似乎是为了快速完成任务而创建的一种简洁语言。虽然我喜欢Python,但有一件事情从来没有让我明白。为什么将空实体命名为None而不是Null或者null呢?可以免费节省一个字符!是否有人知道为什么Python采用了这条路?


5
“免费赠送一个字符!” 这从来不是Python的理念。否则,我们最终可能会得到APL而非Python。 - Abhijit
1
这是一个合理甚至是好的问题。为什么你要点踩? - georg
3
@Abhijit,这句话本来就没有意义,因为“None”和“Null”都是四个字符。 - Mark Ransom
1
这是一个合理的问题,但无法以合理的方式回答。我同意关闭这个问题,但不同意负评。 - Abhijit
FYI,Guido自己的博客文章谈到了这个问题:http://python-history.blogspot.fi/2013/11/story-of-none-true-false.html,要点在于这段话:“最终我们决定将None作为关键字是没有任何副作用的(实际上没有代码会分配给它),而且它可能会使一些代码稍微快一点,或者捕捉到罕见的拼写错误。对于开发者社区来说,仍然存在一次性成本(解析器和文档的更改),但这足够小,我们没有犹豫很长时间。” - Juha Untinen
显示剩余7条评论
1个回答

7
这是一个哲学问题:你在问“为什么?”。
尽管如此,这里有一个答案:Python力求让即使不懂语言的人也能读懂。这行代码:
if foo is None:

读起来比这个好:

if (foo == null) {

在正常的英语语法中,“null”不是一个东西。它是一个形容词,而不是一个名词。在计算机科学中,您使用“none”作为名词。


4
有趣。当向同事描述代码时,我经常说“因为B是null,所以A失败了。”我不明白为什么我们不能使用“foo is Null”,它读起来一样或者可以说更好。对我来说,说“foo is None”似乎很奇怪。即使讨论Python代码,我也会使用单词“null”来描述某个具有值None的东西。 - Naftuli Kay
1
我不太同意这里的说法。COBOL被设计成更像英语,但在初始化指针时,它使用NULL而不是任何语法上正确的单词。使用NULL比喻常量初始化指针 - Abhijit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接