为什么小写和UpperCamelCase的混合?
namedtuple
deque
Counter
OrderedDict
defaultdict
为什么collections
代替Collections
?
我有时会这样做:
from collections import default_dict
错误。我可以使用什么经验法则来避免将来出现这样的错误?
答案 0 :(得分:8)
集合模块遵循PEP 8 Style Guide:
模块应该有简短的全小写名称。
这就是collections
几乎无一例外,类名都使用CapWords惯例。
这就是Counter
和OrderedDict
的原因,因为它们都是类:
>>> collections.Counter
<class 'collections.Counter'>
>>> collections.OrderedDict
<class 'collections.OrderedDict'>
namedtuple
是一个函数,因此它不遵循上面提到的样式指南。 deque
和defaultdict
是类型,因此它们也不是:
>>> 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'>
我认为它们保持defaultdict
和deque
小写以便向后兼容。我不认为他们会为了风格指南而改变这么大的名字。