Функції в програмуванні можна представити як ізольований блок коду, звернення до якого в процесі виконання програми може бути багаторазовим. Навіщо потрібні такі блоки інструкцій? У першу чергу, щоб скоротити обсяг вихідного коду: раціонально винести часто повторювані вирази в окремий блок і, потім, у міру потреби, звертатися до нього.
Уявімо собі таку ситуацію. Потрібно написати скрипт, який при виконанні повинен три рази запитувати у користувача різні дані, але виконувати з ними одні й ті ж дії.
a = int(input('Введіть перше число: '))
b = int(input('Введіть друге число: '))
if a > b:
print(ab)
else:
print(ba)
c = int(input('Введіть перше число: '))
d = int(input('Введіть друге число: '))
if c > d:
print(cd)
else:
print(dc)
e = int(input(Введіть перше число: '))
f = int(input('Введіть друге число: '))
if e > f:
print(ef)
else:
print(fe)
Дана програма знаходить модуль різниці двох чисел. Очевидно, що такий запис вихідного коду не раціональний: виходять три майже однакових блоки коду. Здавалося б, чому б не використати цикл while для організації повторення?
i = 0
while i < 3:
a = int(input('Введіть перше число: '))
b = int(input('Введіть друге число: '))
if a > b:
print(ab)
else:
print(ba)
i = i + 1
Проте, в цьому випадку є один нюанс. Введені користувачем дані завжди зв’язуються з змінними a і b. При кожному витку циклу колишні дані втрачаються. Що ж робити, якщо всі шість чисел, введених користувачем треба зберегти для подальшого використання в програмі? Розглянемо рішення цієї задачі з використанням функції.
def diff():
m = int(input('Введіть перше число: '))
n = int(input('Введіть друге число: '))
if m > n:
print(mn)
else:
print(nm)
return m,n
a,b = diff()
c,d = diff()
e,f = diff()
def – це інструкція (команда) мови програмування Python, що дозволяє створювати функцію. diff – це ім’я функції, яке (так само як і імена змінних) може бути майже будь-яким, але бажано осмисленим. Після в дужках перераховуються параметри функції. Якщо їх немає, то дужки залишаються порожніми. Далі йде двокрапка, що позначає закінчення заголовка функції (аналогічно з умовами та циклами). Після заголовка з нового рядка і з відступом слідують вирази тіла функції. У кінці тіла функції присутня інструкція return (її може й не бути), яка повертає результат, або результати (як у вищевказаному прикладі) в основну гілку програми. У даному випадку, якби у функції не було інструкції return, то в основну програму нічого б не поверталося, і змінним a і b (c і d, а також e і f) числові значення не присвоювалися б.
Після функції йде, так звана, основна гілка програми, в якій змінним попарно присвоюється результат виконання викликаної функції. У інших ситуаціях, коли функція не вертає значень, її виклик не зв’язується зі змінною.
Сама функція виконуються лише тоді, коли вона викликається в основній гілці програми. Так, наприклад, якщо функція присутня у вихідному коді, але ніде не викликається в ньому, то вона не буде виконуватись в програмі жодного разу.