如果list
是Python中的保留字,我就会遇到一个可能会被阻止的错误。 (Dumbery就我而言,确定。)
那么为什么列表(或dict或float或任何类型)不是保留字?添加解释器错误似乎比尝试记住规则更容易。
(我也知道Eclipse / PyDev有一个设置可以提醒你这个规则,这很有用。)
答案 0 :(得分:14)
仅保留keywords。
list
不是关键字,而是内置类型,str
,set
,dict
,unicode
,int
也是如此,float
等。
保留每一种可能的内置类型是没有意义的; python是一种动态语言,如果你想用一个隐藏它的本地名称替换内置类型,你应该能够。
将list
和其他类型视为预先导入的对象类型库;您不希望defaultdict
collections
被保留吗?
使用static code analyzer来捕捉这些错误;大多数IDE都可以让您轻松集成。
答案 1 :(得分:2)
看看这个:http://docs.python.org/2/reference/lexical_analysis.html#keywords
list
只是一种类型而不是保留(int
,float
,dict
,str
......你明白了这一点)
答案 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
作为关键字参数)