Синтаксис языка
Давайте немного отвлечемся и поговорим о синтаксисе языка, блоках и структурах.
Мы пока не говорили самой известной особенности языка — блоки с отступами. Использование блоков с отступами делает Python практически уникальным языком. Во многих других языках программирования есть явное обозначение начала и конца блока с помощью особого синтаксиса, например завершающего слова или скобок. А отступы строк могут иметь косметическое значение и не влиять на выполнение программы. В Python, чтобы показать начало и конец блока используются отступы:
Блочная инструкция:
Вложенные инструкции
Такой подход уменьшает количество визуального шума, делает текст программ легче в восприятии и стандартизирует оформление кода. Что в конечном итоге сказывается на стоимости времени и усталости программистов. Если программу легче читать и легче понимать, то продуктивность и удовольствие от работы программиста повышаются. Хотя по началу кажется, что Python очень требователен к оформлению программ.
Давайте рассмотрим конкретные примеры. Мы скоро будем говорить о цикле for в коде он оформляется следующим образом:
for i in range(1, 6):
# Это тело блока
print(i) # Эта команда находится внутри блока
# Следующая строка выполняется вне блока
print("Вышел зайчик погулять")
Первая строка заканчивается на двоеточие, это обозначение начала блока. Все последующие строки имеют дополнительные пробелы в начале строки. Мы еще в будущем поговорим о стилях оформления, но краткое правило такое всегда используйте 4 (четыре) символа пробела для отступов. Формально вы можете использовать то количество пробелов, которое вам нравится, но сообщество договорилось использовать ровно 4. Поэтому, пожалуйста, всегда настраивайте свой редактор чтобы отступы были ровно 4 пробела и не забывайте заменять символ табуляции на пробелы в Python файлах.
Ошибки в количестве пробелов
Ошибаться в пробелах — это частая ошибка новичков. Чтобы их избежать используйте авто форматирование и проверку синтаксиса специальной программой линтером.
Если синтаксис языка требует отступ, но по какой-то причине вы не можете сейчас написать полный код блока, то можно использовать ключевое слово pass. Удобно применять его, когда вы только пишете код и не хотите отвлекаться на написание тела блока, но хотите запустить программу. Чтобы не было ошибок добавьте pass:
items = []
for i in items:
pass
Специальные случаи оформления
В целом в Python принято писать одну инструкцию в одной строке. Но иногда приходится отступать от правил. Может оказаться, что вам понадобится в одной строке записать несколько инструкций, для такого случая можно использовать символ ;:
a="Magic"; b="Python"; print(a, b)
В тексте программ такой подход использовать не рекомендуется, потому что это снижает читаемость кода и является плохим тоном. Позволительно разве что использовать в артистических целях. Если то, как вы написали программу само по себе является художественным произведением.
Но если запускать интерпретатор со специальным ключом -c, то он может выполнить одну строку инструкций из командной строки. В этом случае как раз очень удобно пользоваться точкой с запятой:
$ python -c 'a="Magic";b="Python";print(a,b)'
Magic Python
Если блок инструкций состоит из одной строки, то можно записать ее в той же строке после знака двоеточия. Но только в том случае если это повышает читаемость:
for i in range(5): print(i)
Когда мы полностью познакомимся со всеми основными частями языка и приступим к выполнению проектов мы обязательно вернемся к правилам оформления кода.
