Рубрики
Без рубрики

Pep 8: Подвесные вдавшиеся и закрывающие скобки в Python

Никогда не нарушайте PEP 8! В этой статье показано, как избежать проблем стиля, касающихся открытия и закрывающих скобок, кронштейнов или скобок.

Автор оригинала: Chris.

Pep 8 пуристы готовы атаковать вас и ваш код, если они поймают вас, не соответствующие Pep 8 Standard Отказ Например, Coders Python ставят свои брекеты, кронштейны или скобки в отдельную строку, чтобы облегчить понять Вложенные списки или Словари Отказ

Эта статья показывает, как выстроить закрывающие скобки, кронштейны и скобки правильно в Python. Это называется «подвесным отступом», и это в сердце PEP 8 стандартизирован Чистый код легко читать и понять!

Быстрый пример показывает, как вы можете создать многострочную конструкцию, соответствующую стандарту PEP 8:

# PEP 8 Compliant
age = {
    'Alice': 24,
    'Bob': 28,
    'Ann': 26,
    }

Итак, как правильно намеренно намереваться список или словарные данные, заключенные в брекеты, кронштейны и скобки?

Согласно стандарту PEP 8, есть два способа выровнете закрывающие скобки, кронштейны или скобки. Сначала выстройте его с первым небеснепространным характером предыдущей строки. Во-вторых, выстроите его с первым символом, который запускает многострочную конструкцию.

Это звучит немного запутанно, так что давайте прыгать на практические примеры.

Где положить скобок, кронштейн или скобок?

Для многострочных конструкций есть два основных варианта того, как правильно намерены данные.

1. Выровняйте закрывающуюся скобу с первым небеснепространным характером предыдущей линии :

# PEP 8 Compliant
age = {
    'Alice': 24,
    'Bob': 28,
    'Ann': 26,
    }

2. Совместите закрывающуюся скобу с первым символом, который запускает многострочную конструкцию :

# PEP 8 Compliant
age = {
    'Alice': 24,
    'Bob': 28,
    'Ann': 26,
}

Оба пути отступа одинаково действительны Согласно стандарту PEP 8 Отказ Но обратите внимание, что в любом случае, открытие и закрывающие скобки (скобки, скобки) должны быть помещены в собственную линию. Так что следующее было бы нарушением стандарта PEP 8:

# NOT PEP 8 COMPLIANT
age = {'Alice': 24,
       'Bob': 28,
       'Ann': 26,
       }

Причина в том, что как открывающие и закрывающие скобки (скобки, скобки) должны быть помещены в свою собственную линию.

Тем не менее, Pep 8 Standard позволяет не размещать как открывающие и закрывающие скобки (скобки, скобки) в собственную линию – если аргументы или элементы выравниваются. Вот три совместимых примера PEP 8:

# PEP 8 Compliant
def f(argument_1, argument_2,
      argument_3, argument_4):
    None


# PEP 8 Compliant
def f(argument_1,
      argument_2,
      argument_3,
      argument_4):
    None


# PEP 8 Compliant
def f(argument_1, argument_2, argument_3, argument_4):
    None

Хотя открытие и закрытие скобок не помещают в свои собственные строки, он по-прежнему PEP 8 соответствует тем, что аргументы выравниваются в первых двух примерах.

Следующий интерактивный код еще не готов. Требуется ваша сверхдержава отладки:

Упражнение : Отладка кода так, чтобы он запущен. Какой метод отступа является вашим предпочтительным?

Зачем конечный список Python с Training Comma?

Мы видели много примеров многострочных конструкций, где после последнего списка появляется трейлинг-запятая:

# PEP 8 Compliant
age = {
    'Alice': 24,
    'Bob': 28,
    'Ann': 26,
    }

Трейлинг запятая после последней строки в словаре ( 'Ann': 26, ) это по желанию Согласно Pep 8 Standard Отказ

Знать: Вы найдете много мнения в Интернете, где «эксперты» скажут вам, что требуется трейлинг запятой ( как здесь ). Но это явно не указано в стандарте. На самом деле, стандарт рекомендует использовать запятую, если ваш «Предметы [являются], как ожидается, будет продлеваться с течением времени» ( Источник ). В этом случае легче скопировать и вставлять новые элементы в список (или словарь), без необходимости вручную добавить трейлинг запятую к старому последнему элементу и удаляя заднюю запятую после нового последнего элемента.

Другими словами, следующая многострочная конструкция также действительна и неявно следует стандарту PEP 8:

# PEP 8 Compliant
age = {
    'Alice': 24,
    'Bob': 28,
    'Ann': 26
    }

Обратите внимание, что конечная запятая отсутствует. Но если вы не планируете продлить список с течением времени, нормально использовать это – даже если некоторые Стиль Python Code Checkers («ЛИНТЕРЫ») жалуются.

Вложенные многострочные конструкции

Теперь вам просто нужно решить, какие из вышеупомянутых методов вы готовитесь к записи открытия и закрывающих скобок, кронштейнов или скобок. Вот как вы можете гнездиться теми и соответствовать стандарту PEP 8:

# PEP 8 Compliant
data = [
    'string',
    42,
    {
        1: '1',
        2: '2',
        42: '21',
    },
    (1, 2, 3),
    (
        [1, 2, 3],
        [4, 5, 6],
    )
]

Вы видите, что мы размещаем каждую скобу, кронштейн и скобки в одну строку. Следующая строка начинается с четырех отступов пробелов. Затем наступает товар, за которым следует запятая. Сам предмет также может быть многострочной конструкции. Но если вы понимаете, как написать одну многострочную конструкцию, вы также поймете, как их гнездить.

Подобные вопросы

Должны ли вьющиеся брекеты появляться на собственной линии?

Да, они должны появиться на собственной линии. Исключением является если вы пишете всю последовательность элементов в одной строке. В этом случае закрывающая скобка, кронштейн или скобка должна появиться в конце одной и той же линии.

Где положить ближайшую скобу?

Как обсуждалось ранее, вы выстроите его с первым небеснепространным символом предыдущей строки, или с первым символом, который запускает многострочную конструкцию.

Правило Flake-8: Продолжение линии без подсветки для подвесного отступа (E131)

Это Общая ошибка анализатора кода Flake-8 Отказ Линия продолжения не связана с отступом для зависания.

Анти-шаблон :

# NOT PEP 8 Compliant
my_dict = {
    "key": "value",
    "long": "the quick brown fox jumps over the "
        "lazy dog",
}

Лучшая практика :

# PEP 8 Compliant
my_dict = {
    "key": "value",
    "long": "the quick brown fox jumps over the "
            "lazy dog",
}

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Оригинал: “https://blog.finxter.com/pep-8-hanging-indentation-and-closing-brackets-in-python/”