Теорія:

Види функцій
Функція — це пойменований блок програмного коду, до якого можна звернутися з будь-якого місця програми необхідну кількість разів.
Python надає у використання вбудовані функції, на зразок len(), print(), input() тощо, тобто функції, які описані в модулях і библиотеках мови Python.

При описі класів ми описували методи класів — функції, що призначені для змінювання властивостей об’єктів - екземплярів цих класів. Для виклику методу класа слід указати назву об’єкта, для якого викликається метод: об’єкт.<_метод>([значення параметрів]).
 

Програмуючи графічний інтерфейс, ми створюємо обробники подій для віджетів – функції, які виконуються при настанні подій з цими віджетами. Функції-обробники подій пов’язуються з об’єктом або через значення атрибуту command у списку параметрів при створенні об’єкта, або за допомогою методу bind().
 
У 6 класі ви ознайомились із методом поділу на складної задачи на підзадачі, що полягає в тому, що при розробці алгоритму спочатку визначають основні кроки, тобто розробляють стратегію розв’язування задачі (що зробити?). Після цього розробляють шляхи і методи реалізації намічених кроків (як зробити?).
 
1.PNG
 
Алгоритм розв’язування кожної підзадачі можна оформити у вигляді функції.
Функції, які описує програміст для  реалізації алгоритму розв’язування окремих  підзадач,  називають функціями користувача.
Головною перевагою функцій є можливість багаторазового  використання коду. Використання функцій спрощує читання, написання, тестування коду і виправлення помилок.
Правила опису функцій в Python
Синтаксис опису функцій в Python такий:
def назва_функції (<перелік формальних параметрів>):
            <тіло функції>
Правила опису функцій в Python.
  • Заголовок функції складається з ключового слова def, назви функції і переліку формальних параметрів, узятих у круглі дужки (()). Формальні параметри отримують значення при виклику функції. Якщо функції не треба передавати значень, необхідно записати порожні дужки.
  • Після дужок йде двокрапка (:) і з нового рядка з відступом починається тіло функції.
Приклад:
Проаналізуй структуру програми, у якій використовується функція користувача nsd(m,n):
31.PNG
Якщо функція не повертає значення в основну програму, виклик функції є окремим оператором основної програми:
<назва функції>(<перелік фактичних параметрів>)
Зверни увагу!
 Опис функції має знаходитись вище виклику функції!
Коли програма зустрічає оператор виклику функції, управління передається в функцію з указаною назвою. Значення фактичних параметрів (аргументів) передаються формальним параметрам шляхом присвоювання, тому необхідно дотримуватись відповідності між списками формальних та фактичних параметрів щодо їх кількості, порядку розташування, відповідності типів. Якщо формальних параметрів немає, при виклику після назви функції пишуть порожні дужки.
 
 Відповідність між списками формальних та фактичних параметрів: кількість; порядок розташування; збіг типів.
Коли функція виконає всі оператори, що складають тіло функції, програма продовжить виконуватися з оператора, наступного за оператором виклику функції.
Приклад:
Проаналізуйте послідовність виконання операторів програми, зверніть увагу на значення, які отримують формальні параметри (рис.1):
2.PNG
 
Рис.1
Повернення результату виконання функції
Якщо функція створюється з метою обчислення деякого значення, і результат обчислень треба надалі використовувати в основній програмі, слід повернути результат виконання функції до основної програми. Для повернення значення виразу в основну програму в тілі функції потрібно записати оператор return  (рис.2).
Оператор return припиняє виконання функції і повертає значення виразу в основну програму.
3.PNG
 
Рис.2
Зверни увагу!
  Виклик функції, яка має повернути значення, не може бути окремим оператором.
Назву і параметри функції слід записати у правій частині оператора присвоєння. Можна також викликати функцію зі списку виведення оператора print().
Якщо функція не використовує оператор return явно, вона повертає результат None. None — це константа, що представляє відсутність значення, тобто означає нічого або порожнє місце. 
Приклад:
Скласти програму для розв’язування задачи: Дано 3 шестерні, що мають а, b, c зубців (рис.3). Скільки обертів має здійснити кожна шестерня, щоб конструкція повернулась у початкове положення?
 
4.PNG
 
Рис.3

Алгоритм розв’язування задачи складається з таких кроків:
  • обчислити найбільший спільний дільник НСД(а, b, c);
  • обчислити найменше спільне кратне НСК(a, b,с) за формулою НСК(a, b,с) = a*b/НСД(a, b);
  • обчислити частки від ділення найменшого спільного кратного на число зубців кожної шестерні.
    def nsd(m, n): # Обчислення НСД 2 аргументів
        while m != n:
             if m>n: m=m-n
             else: n=n-m
        return m
    a=int(input("a=?"))
    b=int(input("b=?"))
    c=int(input("c=?"))
    d = nsd(a,b)
    d = nsd(d,c)
    k = a*b*c // d
    print ("Шестерні А, В, С зроблять ", k//a, k//b, k//c, "обертів")
5.PNG
 
Рис.4
При створенні функції необхідно пам‘ятати про області видимості змінних (рис.5).
Область видимості змінної — це та частина програмного коду, в якій змінна доступна для використання.
6.PNG
 
Рис.5
Отже, функції якби поділяють програму на окремі частини, кожна з яких виконує конкретне завдання. Також функції надають можливість багаторазово викликати один і той самий код з різних місць програми.
Джерела:
Інформатика : підруч. для 8 кл. закл. загал. серед. освіти / [О. О. Бондаренко, . В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов]. — Харків : Вид-во Ранок», 2021