Почему у collection.defaultdict
и collection.OrderedDict
есть разные значения?капитализация названий классов библиотек
Есть ли какая-то тонкая разница, о которой я должен знать?
(P3K)
Почему у collection.defaultdict
и collection.OrderedDict
есть разные значения?капитализация названий классов библиотек
Есть ли какая-то тонкая разница, о которой я должен знать?
(P3K)
Капитализация имен классов не имеет значения, это ничего не значит. За исключением того, что Python иногда вырастает органично, а стандартная библиотека не имеет такого же однородного ощущения, как другие большие библиотеки, такие как Win32 API или стандартная библиотека Java.
Обычно, то есть в соответствии с хорошим стилем, классы капитализируются.
def MyClass (object):
pass
my_instance = MyClass()
вот так.
Вы должны прочитать этот документ об этом: http://www.python.org/dev/peps/pep-0008/
Тогда возникает вопрос, почему это не относится к 'defaultdict'? –
Uhm. Хороший вопрос. :-) Я думаю, что это может быть совместимо с его родительским классом, dict. dict - один из встроенных типов и, как таковой, строчный (str, int, ...). Может быть, авторы хотели оставить открытым возможность ввести defaultdict в встроенное пространство имен вместе с dict. В этом случае ** нарушение правил ** (см. PEP8) имеет смысл. –
'OrderedDict' также является подклассом' dict', и он капитализируется должным образом. Что касается преобразования 'defaultdict' в встроенный класс, почему бы не преобразовать капитализацию в одно и то же время? В этом токене любой новый класс в библиотеках Python должен быть написан в нижнем регистре, если он однажды может стать встроенным. – max
defaultdict написана на C и pep8 не применяются, в другой руке OrderDict написан на питоне,
вы можете прочитать код C норму для реализации C Питона здесь: PEP 7
ссылка: исходный код python2.7
defaultdict : Modules/_collectionsmodule.c
OrderDict : Lib/collections.py
Почему класс C не может быть открыт для библиотеки Python в заглавных буквах? C чувствителен к регистру. Что мне не хватает? – max
@max: у каждого языка есть своя норма кодирования, мы не можем закодировать в C, используя python norm pep8 вправо? вот норма для расширения C: http://www.python.org/dev/peps/pep-0007/ – mouad
Я согласен в целом ... но при написании функции в C с единственной целью предоставления библиотечной функции для стандартной библиотеки Python я буду следовать стилю Python для имени функции – max
Следует отметить, что в Python 3 есть усилия, чтобы стандартизировать имена встроенных модулей и классов. http://www.python.org/dev/peps/pep-3108/#pep-8-violations-done –