18

为什么要混合使用小写和大写驼峰式?

namedtuple
deque   
Counter 
OrderedDict
defaultdict

为什么collections而不是Collections

例如,我有时会这样做:

from collections import default_dict

因为失误。我可以使用什么经验法则来避免将来出现此类错误?

4

1 回答 1

15

集合模块遵循PEP 8 样式指南

模块应该有简短的全小写名称。

这就是为什么它collections


几乎无一例外,类名都使用 CapWords 约定。

这就是为什么它是Counterand OrderedDict,因为它们都是类:

>>> collections.Counter
<class 'collections.Counter'>
>>> collections.OrderedDict
<class 'collections.OrderedDict'>

namedtuple是一个函数,所以它不遵循上面提到的样式指南。dequedefaultdicts 是类型,所以它们也不是:

>>> collections.deque
<type 'collections.deque'>
>>> collections.namedtuple
<function namedtuple at 0x10070f140>
>>> collections.defaultdict
<type 'collections.defaultdict'>

注意:在 Python 3.5 中,defaultdict 和 deque 现在也是类:

>>> import collections
>>> collections.Counter
<class 'collections.Counter'>
>>> collections.OrderedDict
<class 'collections.OrderedDict'>
>>> collections.defaultdict
<class 'collections.defaultdict'>
>>> collections.deque
<class 'collections.deque'>

我认为他们保留defaultdictdeque小写是为了向后兼容。我无法想象他们会为了风格指南而做出如此剧烈的名称更改。

于 2013-09-23T07:21:32.760 回答