【发布时间】:2017-09-22 22:05:27
【问题描述】:
查看source code,似乎唯一的“原因”是OrderedDict 是用Python 编写的,而defaultdict 是用C 编写的。但这似乎正在改变,因为Python 3.5 应该有一个cOrderedDict(参见Python Bugs),这突出了我唯一的解释实际上是多么糟糕。
谁能提供更好的解释?我希望有更好的理由。
编辑:
alleged duplicate 答案对于 Python 2.7 是可以的,而不是对于没有类/类型区别的 Python 3。 OrderedDict 和 defaultdict 都被解释器本身视为类:
>>> collections.defaultdict
<class 'collections.defaultdict'>
>>> collections.OrderedDict
<class 'collections.OrderedDict'>
【问题讨论】:
-
“既然类和类型应该是统一的,那么 Python 类的 CamelCase 和 C 类型的小写之间的区别令人沮丧地尴尬。” - user2357112,来自标记副本中的评论。
-
解决您的“这正在改变”的观点:这不是 python 3 执行 c 实现的方式。例如 py3,您执行
import pickle并委托给import _pickle- c 实现 - 如果可用。 -
谢谢,@roippi,我指的是 bugs.python.org/issue16991> 中的补丁,它们被称为
cOrderedDict。 C 和 Python 版本都将通过相同的名称导入这一事实无关紧要。defaultdict和OrderedDict的命名约定仍然不匹配。
标签: python