为什么'list'不是Python中的保留字?

时间:2013-02-04 20:00:07

标签: python python-2.7

如果list是Python中的保留字,我就会遇到一个可能会被阻止的错误。 (Dumbery就我而言,确定。)

那么为什么列表(或dict或float或任何类型)不是保留字?添加解释器错误似乎比尝试记住规则更容易。

(我也知道Eclipse / PyDev有一个设置可以提醒你这个规则,这很有用。)

4 个答案:

答案 0 :(得分:14)

仅保留keywords

list不是关键字,而是内置类型,strsetdictunicodeint也是如此,float等。

保留每一种可能的内置类型是没有意义的; python是一种动态语言,如果你想用一个隐藏它的本地名称替换内置类型,你应该能够。

list和其他类型视为预先导入的对象类型库;您不希望defaultdict collections被保留吗?

使用static code analyzer来捕捉这些错误;大多数IDE都可以让您轻松集成。

答案 1 :(得分:2)

看看这个:http://docs.python.org/2/reference/lexical_analysis.html#keywords

list只是一种类型而不是保留(intfloatdictstr ......你明白了这一点)

答案 2 :(得分:0)

可能出于同样的原因,哪些类没有私有属性。这是Python的精神。

答案 3 :(得分:0)

这是一个意见问题,但这是我的2c。

保留关键字是一件大事,因为本质上它意味着你永远不能在代码中使用该关键字,所以它通常被认为是良好的编程语言设计以保持列表简短。 (perl没有,但是perl与大多数其他编程语言完全不同,并且在变量之前使用特殊符号来试图防止冲突)。

无论如何,要了解为什么会出现这种情况,请考虑向前兼容性。想象一下,python开发人员认为array是一个基本的概念,他们想让它成为内置的(不可思议 - 这发生在set in,嗯,python 2.6?)。如果内置版本是自动保留的,那么之前曾使用array用于其他内容的任何人(即使明确导入为from superfastlist import array),或实现了自己的(numpy已完成此操作),突然发现他们的代码不会起作用,他们会非常愤怒。

(就此而言,考虑help是否为保留字 - 包括argparse的zillion库,使用help作为关键字参数)