Нашел кусок кода не могу понять синтаксис и как это работает
nuancesprog.ru
не пинайте а ,Гуру, растолкуйте как и что. Спасибо.

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

Код:
def add(x, y):
return x + ydef sub(x, y):
return x - ydef mult(x, y):
return x * ydef calculator(opcode):
if opcode == 1:
return add
elif opcode == 2:
return sub
else:
return mult my_calc = calculator(2) #MY CALC IS A SUBSTRACOTR
my_calc(5, 4) #RETURNS 5 - 4 = 1
my_calc = calculator(9) #MY CALC IS A MULTIPLLIER
my_calc(5, 4) #returns 5 x 4 = 20.