Я в основном программист на Python, который использует pylint для слияния исходного кода. Я могу удалить все предупреждения, кроме одного: Неверное имя для константы. Изменение названия на все заглавные буквы исправляет это, но действительно ли я должен это делать? Если я сделаю это, я обнаружу, что мой код выглядит безобразно, так как большинство переменных являются постоянными (в соответствии с Pylint).
python
coding-style
coding-standards
conventions
Абхишек Кумар
источник
источник
NOTES_DIRECTORY = argv[1] chdir(NOTES_DIRECTORY) FILES = glob('*.txt') RAND_FILE = choice(FILES) with open(RAND_FILE) as notes_file: POINTS = notes_file.readlines() RAND_POINT = choice(POINTS)
Ответы:
Вы, вероятно, пишете такой код:
Вы должны переместить этот код в функцию:
Pylint предполагает, что код, который фактически выполняет эту работу, будет внутри функции. Поскольку этот код находится на верхнем уровне кода, а не внутри функции, он запутывается.
Вообще говоря, лучше работать внутри функции, а не на верхнем уровне. Это позволяет вам лучше организовать то, что вы делаете, и облегчает его повторное использование. На самом деле у вас должен быть только код, выполняющий алгоритм вне функции в быстром и грязном скрипте.
источник
Да. Согласно правилу PEP8s о константах :
Длинная версия:
В сообществе Python (как и во многих других сообществах) существуют соглашения о том, как писать код. Это отличается от рабочего кода : даже если вы пишете свои константы в нижнем регистре, ваш код все еще работает.
Но существует консенсус сообщества (как задокументировано в PEP8), который "навязывается" такими инструментами, как Pylint . Если вы программируете для собственного счастья, вы можете игнорировать подсказки, которые дает вам Pylint. Если вы хотите открытого обмена с сообществом, то есть «кто-то кроме меня должен использовать мой код», вы должны подготовить свой код в соответствии с PEP8.
источник
pylint
ошибиться. Python не предоставляет способ отличить константу от переменной, кроме того, что константа всегда должна иметь одно и то же значение.pylint
предполагает , что все , что только однократно и не когда - либо изменение является постоянным, но если это не предназначено , чтобы быть постоянным, это может быть просто артефакт реализации. И, в частности, код, приведенный в комментарии к вопросу, имеет значения, которые будут отличаться при каждом запуске, поэтому его не следует считать константой, даже если Pylint считает, что это так.const
ключевое слово. Хотя начальное значение отличается, кроме, может бытьPI
.pylint
подразумевается последнее, даже если первое имеет место.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
, и они не должны управляться как отдельная программа глобалов. Например, их можно поместить в словарь как глобально доступный набор параметров программы:В Python также есть прекрасная возможность передачи параметров ключевых слов, что уменьшает необходимость использования
APPARENTLY_ANGRY_GLOBAL_VARIABLES
:На практике многие из этих значений будут (или должны быть) считаны из файлов конфигурации, переменных среды ОС, аргументов командной строки или других источников для удовлетворения инверсии принципа / шаблона управления. Но это большая история для другого дня.
источник
Да, это довольно часто встречается в большинстве языков программирования (по крайней мере, тех, которые я использую).
Вы можете обратиться к этой ссылке Google, чтобы поделиться общим стилем между разработчиками одной команды.
Рекомендуется использовать
источник