Чтобы разбить одну строку в несколько строк в Python, используйте открывающуюсясящую скобки в строке, которую вы хотите сломать. Теперь Python ожидает закрытия скобок в одной из следующих строк, и выражение оценивается по границам линии. Как альтернатива, вы также можете использовать обратную челюсть \
Прямо перед перерывом линии, чтобы избежать нового символа.
После публикации статьи о том, как конденсироваться несколько строк в одну строку Кода Python, многие финансовые спросили: Как сломать длинную строку на несколько строк в Python ? Эта статья показывает вам лучший способ нарушения длительной одноклассник на несколько строк для повышения читаемости и отключить ваш код.
Проблема : Учитывая длинную линию кода Python. Как сломать его на несколько строк?
Есть несколько способов нарушения этого на несколько строк. Давайте сначала просмотрим обзор:
Упражнение : Запустите код. Какой вывод? Измените метод 3 и снова напишите его как одноклассник!
Теперь мы погрузимся в каждый из этих методов.
Метод 1: Неявное продолжение линии – используйте скобки, чтобы избежать разрыва линий обратную косание
PEP 8 – Руководство по стилю утверждает, что лучший способ разбить длинные линии в несколько строк кода, состоит в том, чтобы использовать неявное продолжение линии с помощью скобок. Открытие сигналов скобок в Python, что выражение еще не закончено. Итак, переводчик Python продолжает смотреть в следующую строку, чтобы закрыть текущее открытое выражение. Таким образом, вы можете переписать любой Python One-Liner на многопроводу, просто используя одну или несколько пар скобок.
Вот оригинальное утверждение от Руководства по стилю PEP 8 (акцент со мной):
Предпочтительным способом упаковки длинных линий является использование Python’s Подразумеваемое продолжение линии внутри скобок, скобок и брекетов Отказ При необходимости вы можете Добавьте дополнительную пару скобок вокруг выражения, но иногда используя обратную косание, выглядит лучше. Обязательно выполните отступ на постоянную линию соответствующим образом.
Вам нужен пример для неявного продолжения линии? Вот:
# Long Line a = list(zip(['Alice', 'Bob', 'Liz', 'Ann'], [18, 24, 19, 16])) # Implicit Line Continuation b = list(zip(['Alice', 'Bob', 'Liz', 'Ann'], [18, 24, 19, 16])) print(a) # [('Alice', 18), ('Bob', 24), ('Liz', 19), ('Ann', 16)] print(b) # [('Alice', 18), ('Bob', 24), ('Liz', 19), ('Ann', 16)]
Длинная линия a (zip ("Алиса", "Боб", "Лиз", "Энн", [18, 24, 19, 16]))
молнии вместе два списка для получения результата [(«Алиса», 18), («Боб», 24), («Лиз», 19), («Энн», 16)]
Отказ Вы можете переписать это в несколько строк, используя существующие скобки. Обратите внимание, что это хороший стиль иерархически выравнивает линии в Python. В нашем примере два Списки выровнены при создании многострочной оператора для назначения переменной B
Отказ
Воспоминание : Вы всегда можете сломать линии, если открытый кроншлетки, скобки или браслет не был закрыт!
Способ 2: Продолжение явного строки – используйте разрыв линии
Однако, что, если вы не хотите вводить новые скобки в ваше выражение? Можете ли вы все еще разбить одноклассник на несколько строк?
Ответ: Да! Просто используйте перерыв линии Backslash \
который вы можете позвонить Продолжение явного строки Отказ С обратной ячейкой вы можете сломаться в любом положении в своем выражении. Технически, персонаж обратной косой черты « issapes » «Новый символ Newline, который следует сразу после этого. Ударяя новенью персонажу, он теряет свой смысл, а Python просто игнорирует его. Таким образом, вам не нужно вводить какие-либо новые скобки.
Вот минимальный пример, который показывает гибкость, с которой вы можете сломать новые строки таким образом:
a = 1 + 2 + 3 + 4 - 5 * 2 b = 1 \ + 2 + \ 3 + 4\ - 5 *\ 2 print(a) # 0 print(b) # 0
Увидев грязный код в предыдущем примере может привести к вам спросить:
Должна ли перерыв линии до или после двоичного оператора?
Я дам следующий ответ на основе руководства по стилю PEP 8 (подсветки мной):
На протяжении десятилетия рекомендуемый стиль должен был Перерыв после двоичных операторов Отказ Но это может Больно читаемость двумя способами:
- Операторы, как правило, разбросаны по разным столбцам на экране, а также
- Каждый оператор отошел от операнда и на предыдущую строку.
Здесь глаз должен сделать дополнительную работу Сказать, какие элементы добавляются и которые вычтены:
# Wrong: results = (variable1 + variable2 + (variable3 - variable4) - variable5 - variable6)
Решить эту проблему для чтения, математики и их издатели следуют противоположная конвенция .
Дональд Кнут объясняет традиционное правило в своих компьютерах и наборных серий: «Хотя формулы в пределах абзаца всегда перерываются после двоичных операций и отношений, отображаемые формулы всегда ломаются перед двоичными операциями» [3] .
Таким образом, следующий код предлагается:
# Correct: results = (variable1 + variable2 + (variable3 - variable4) - variable5 - variable6)
Вы можете сделать как в Python, но вы должны предпочесть последнее, чтобы улучшить читаемость вашего кода!
Способ 3: разбить строку, используя многострочную строку с тройными цитатами
Пример : Скажем, у вас есть следующая длинная строка из Ромео и Джульетта:
s = 'Mistress! what, mistress! Juliet! fast, I warrant her, she:\n Why, lamb! why, lady! fie, you slug-a-bed!\n Why, love, I say! madam! sweet-heart! why, bride!\n What, not a word? you take your pennyworths now;\n Sleep for a week; for the next night, I warrant'
Обратите внимание на новенький символ в строке: это действительно многословная строка! Можете ли вы переписать это на несколько строк для повышения читаемости?
Вы можете реструктурировать строки, используя тройные цитаты, которые позволяют определять многострочную строку без новой строки '\ N'
в строке. Это значительно улучшает читаемость многострочных строк! Вот пример:
s1 = 'Mistress! what, mistress! Juliet! fast, I warrant her, she:\n Why, lamb! why, lady! fie, you slug-a-bed!\n Why, love, I say! madam! sweet-heart! why, bride!\n What, not a word? you take your pennyworths now;\n Sleep for a week; for the next night, I warrant' # MULTI-LINE s2 = '''Mistress! what, mistress! Juliet! fast, I warrant her, she: Why, lamb! why, lady! fie, you slug-a-bed! Why, love, I say! madam! sweet-heart! why, bride! What, not a word? you take your pennyworths now; Sleep for a week; for the next night, I warrant''' print(s1 == s2) # True
Это два способа определения той же строки. Если вы сравните их, результат – Правда
Отказ Однако второй путь гораздо более читабелен и должен быть предпочтительным!
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.