Краткое введение в стиль кодирования Python
Когда пару дней назад я решил начать писать о Python, я не был уверен, какой будет моя первая тема. В основном потому, что я никогда в жизни не писал статей, и это довольно пугающе. Затем я подумал: «Хорошо, я просто начну с чего-нибудь короткого и простого, чтобы намочить ноги», и вот мы здесь.
Мы кратко рассмотрим некоторые рекомендации по стилю кодирования для Python, которые помогут нам написать четкий, последовательный и удобный для глаз код.
Давайте погрузимся прямо в!
Оглавление
- Введение
- Соглашения об именах
- В белое пространство или не в белое пространство?
- Общие рекомендации
- Не делай все сам
Скорее всего, вы уже слышали о PEP , но на всякий случай вот формальное определение:
PEP означает предложение по улучшению Python. PEP — это проектный документ, предоставляющий информацию сообществу Python или описывающий новую функцию для Python, его процессов или среды.
Существует большой список PEP, посвященных различным темам, связанным с Python, но мы сосредоточимся только на PEP 8 , который является руководством , когда речь идет о соглашениях о стиле кодирования Python. Он направлен на то, чтобы сделать код более читабельным и последовательным, определяя набор рекомендаций по соглашениям об именах, использованию табуляции вместо пробелов, максимальной длине строки и т. д.
Однако имейте в виду, что это не правила, иногда имеет смысл не следовать им . конкретное руководство, посмотрите несколько примеров здесь: Глупая последовательность - это Хобгоблин Маленьких Умов
Соглашения об именах
Давайте начнем с рассмотрения простого примера. Что вы думаете об этих двух функциях?
def sumEvenNumbers(numbers):
even_sum = 0
for ListNumber in numbers:
if ListNumber % 2 == 0:
even_sum += ListNumber
return even_sum
def sum_odd_nums(nums):
OddSum = 0
for n in nums:
if n% 2 == 0:
OddSum+= n
return OddSum
Сейчас вы можете подумать: «Ну, Ахмед, и что? Это действительно так важно?» Я бы сказал, что да, по нескольким причинам:
- Мы чаще читаем код, чем пишем его, поэтому важно, чтобы он был чистым и понятным.
- При создании новой переменной/функции/класса одной проблемой меньше, потому что вы уже знаете, как это должно выглядеть, и вам нужно только придумать описательное имя (не знаю, как вам, но иногда мне приходится немного)
- Упрощает написание сценариев статического анализа или автоматизации, когда шаблоны именования везде одинаковы.
Введите ПКП 8!
Он содержит рекомендации по рекомендуемым стандартам именования переменных, классов, функций и т. д. Вот некоторые из них:
- Классы: используйте стиль CamelCase (например
class InputManager) - Функции и переменные: используйте стиль snake_case (например,
def sum_even_numbers(numbers)илиsum_even = 0) - Методы: такие же, как функции, и, если это закрытый метод, используйте одно ведущее подчеркивание (например
def _calculate_intermediate_sum(self)) - Константы: используйте все заглавные буквы с подчеркиванием для разделения слов (например
MAX_WIDTH = 10)
Наш следующий заказ — использование пробелов. Этот чисто эстетический.
В пустое пространство:
- Один пробел по обе стороны от бинарных операторов (
=,+=,-=,>,>=,<,<=,==и т. д.) (напримерsum += 5) - Один пробел после запятой (запятых) в кортежах/списках (например
ages = [12, 13, 14], ,coordinates = (4, 3)) - В функциях введите подсказки: один пробел после двоеточия и окружите
->пробелом с обеих сторон (напримерdef sum_even(nums: List) -> int:, ) - Когда значение по умолчанию используется в сочетании с подсказкой типа в сигнатуре функции, используйте пробелы вокруг
=(напримерdef draw(scale: int = 1) -> None:)
(я не знал об этом до исследования для этой статьи)
- Не добавляйте лишние пробелы для выравнивания операторов
- Перед запятыми в кортежах/списках
- Непосредственно внутри скобок, скобок или фигурных скобок
- Избегайте пробелов в конце
# Good
age = 20
social_security_number = 1111
info[0] = (names[0], {'address': 'somewhere'})
heights = [180, 178, 195]
# Bad
age = 20
social_security_number = 1111
info[ 0] = ( names[ 0 ], { 'address': 'somewhere' } )
heights = [180 , 178 , 195]
Есть много других рекомендаций, о которых я хотел бы поговорить, но, чтобы не усложнять, я просто оставлю вас с несколькими краткими подсказками (более подробное описание можно найти в документации PEP 8 ) :
- Импорт должен выполняться отдельными строками
- Используйте пробел вместо табуляции (за исключением случаев, когда табуляция уже используется в вашей кодовой базе, поскольку Python не позволяет смешивать пробелы и табуляцию)
- Рекомендуемая максимальная длина строки — 79 символов для кода и 72 символа для комментариев или строк документации.
- Используйте 4 пробела на уровень отступа
Нам всем время от времени нужна помощь, и когда дело доходит до соблюдения стандартов, которые мы обсуждали, вам нужна библиотека autopep8. Этот инструмент автоматически форматирует ваш код Python в соответствии с руководством по стилю PEP 8, вы также можете указать уровень агрессивности и следует ли игнорировать некоторые правила при форматировании (Правила, исправленные autopep8 )
Чтобы установить его:
pip install autopep8
И использовать его так же просто:
autopep8 --in-place --aggressive <filename>
Если вы разрабатываете Visual Studio Code, я настоятельно рекомендую использовать функцию автоматического форматирования в расширении Python, где она запускается autopep8в файле при его сохранении.
Вам просто нужно добавить несколько строк в файл VSCode settings.json. Вот фрагмент настроек, которые я использую:
"python.formatting.autopep8Args": [
"--max-line-length=79",
"--ignore",
"E402"
],
"editor.formatOnSave": true,
До следующего раза!
Рекомендации
- https://peps.python.org/pep-0000/
- https://peps.python.org/pep-0001/
- https://peps.python.org/pep-0008
- https://docs.python-guide.org/writing/style
- https://pypi.org/project/autopep8/
- Ознакомьтесь с конвенциями Docsring:https://peps.python.org/pep-0257

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































