PEP8 и норма сообщества Python - это использование ALL_CAPS_CONSTANTS
. Это общая визуальная подсказка, используемая десятилетиями в C, Java, Perl, PHP, Python, bash и других языках программирования и средах оболочки. Но на современном интернет-языке ВСЕ КОПИИ ЗНАЧИТ КРИТЬ . И кричать это грубо.
Python, однако, довольно противоречив ALL_CAPS_CONSTANTS
. JavaScript может иметь Math.PI
, но Python есть math.pi
. Нет более узнаваемой или устойчивой константы, чем π. Или рассмотрите sys.version_info
версию Python, на которой вы работаете. 100% постоянным в течение жизни вашей программы - гораздо больше , чем PORT
или MAX_ITERATIONS
или другие константы , которые бы определить. Или как насчет sys.maxsize
? Максимальное собственное целочисленное значение вашей платформы постоянно не только в течение одного или двух запусков программы, но и в течение срока службы вашего оборудования.
Если эти константы, в том числе такие, как π и e, являются фундаментальными константами вселенной и не будут изменяться в течение всей вечности, - если они могут быть строчными, хорошо ... как и другие константы. Ты можешь выбрать.
Помните, PEP8 - это руководство по стилю. Руководство, а не закон. Руководство часто нарушается даже стандартной библиотекой Python. И ссылаясь на другое основное руководство по Python, PEP20 (он же «Дзен Питона»):
- Красиво лучше, чем некрасиво
- Читаемость имеет значение
- Практичность превосходит чистоту.
На практическом примечании, когда програмы YELLY_CONSTANT
и SHOUTY_PARAMETER
начинает тереть, это помогает помнить , что все-CAPS константы как правило, не очень прочный платоновские идеалы , но параметры работы программы. Там нет ничего действительно постоянной о PORT
, SITENAME
или NUMRUNS
, и они не должны управляться как отдельная программа глобалов. Например, их можно поместить в словарь как глобально доступный набор параметров программы:
config = {
'port': 80,
'sitename': "Bubba's Blog",
'numruns': 100,
}
В Python также есть прекрасная возможность передачи параметров ключевых слов, что уменьшает необходимость использования APPARENTLY_ANGRY_GLOBAL_VARIABLES
:
def process_data(sitename, port=80, numruns=100):
...
process_data("Bubba's Blog")
На практике многие из этих значений будут (или должны быть) считаны из файлов конфигурации, переменных среды ОС, аргументов командной строки или других источников для удовлетворения инверсии принципа / шаблона управления. Но это большая история для другого дня.