При написании больших программ ты можешь столкнуться с двумя проблемами:
1) программа может получиться слишком большой и непонятной;
2) один и тот же участок кода тебе придется использовать в разных местах программы.

Настоящие программисты разбивают свою программу на маленькие кусочки - подпрограммы (процедуры). Каждая подпрограмма решает свою небольшую задачу. 

В общем виде, описание подпрограммы выглядит следующим образом:
 
def name():
    команды

Команды процедуры записываются с отступом. Содержать процедура внутри себя может любые конструкции.
Имя процедуры (name) может быть любым, состоящим из латинских символов и цифр, но обязательно начинаться с буквы или знака подчеркивания (_) и не содержать пробел.

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

def name():   # Сначала описываем процедуру. Сделать это нужно до основной программы
    команды

name()   # В этом месте, указав имя процедуры, будут выполняться команды, описанные в процедуре выше.
вниз
вниз
name()   # здесь снова будут выполняться команды из процедуры.


Фактически, создавая процедуру, мы учим робота выполнять новые команды, которые не заложены в его систему команд!