Синтаксис языка

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

Мы пока не говорили самой известной особенности языка — блоки с отступами. Использование блоков с отступами делает Python практически уникальным языком. Во многих других языках программирования есть явное обозначение начала и конца блока с помощью особого синтаксиса, например завершающего слова или скобок. А отступы строк могут иметь косметическое значение и не влиять на выполнение программы. В Python чтобы показать начало и конец блока используются отступы:

Блочная инструкция:
    Вложенные инструкции

Такой подход уменьшает количество визуального шума, делает текст программ легче в восприятии и стандартизирует оформление кода. Что в конечном итоге сказывается на стоимости времени и усталости программистов. Если программу легче читать и легче понимать, то продуктивность и удовольствие от работы программиста повышаются. Хотя по началу кажется, что Python очень требователен к оформлению программ.

Давайте рассмотрим конкретные примеры. Мы скоро будем говорить о цикле for в коде он оформляется следующим образом:

1
2
3
4
5
6
for i in range(1, 6):
    # Это тело блока
    print(i)  # Эта команда находится внутри блока

# Следующая строка выполняется вне блока
print("Вышел зайчик погулять")

Первая строка заканчивается на двоеточие, это обозначение начала блока. Все последующие строки имеют дополнительные пробелы в начале строки. Мы еще в будущем поговорим о стилях оформления, но краткое правило такое всегда используйте 4 (четыре) символа пробела для отступов. Формально вы можете использовать то количество пробелов которое вам нравится, но сообщество договорилось использовать ровно 4. Поэтому, пожалуйста, всегда настраивайте свой редактор чтобы отступы были ровно 4 пробела и не забывайте заменять символ табуляции на пробелы в Python файлах.

Ошибки в количестве пробелов

Ошибаться в пробелах — это частая ошибка новичков. Чтобы их избежать используйте автоформатирование и проверку синтаксиса линтером.

Блоки могут быть вложенными:

1
2
3
4
5
6
7
8
9
for i in range(1, 6):
    # Это тело блока
    if i % 2 == 0:
        # вложенный блок с дополнительными отступами
        continue
    print(i)  # Эта команда находится внутри блока

# Следующая строка выполняется вне блока
print("Вышел зайчик погулять")

В строке 3 в этом примере начинается новый блок, и заканчивается он в строке 6, но эта строка все еще является частью цикла.

Комментарии

В исходном коде Python есть возможность оставить текст который прочитает не компьютер, а человек. Этот текст обычно называется комментарий. Для того чтобы добавить комментарий надо записать знак # и все что будет написано до конца строки интерпретатор пропустить и не будет на него реагировать. Комментарии можно использовать и внутри блоков с отступами. Символ # внутри кавычек строки не считается комментарием, но после закрытия кавычек текст после символа # уже будет комментарием.

Несколько дополнительных примеров:

# Это комментарий
x = "Привет"  # Это тоже комментарий
# Символ # внутри текстовой строки не комментарием  
y = "Используйте хештег #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)

Когда мы полностью познакомимся со всеми основными частями языка и приступим к выполнению проектов мы обязательно вернемся к правилам оформления кода.