Функція — це блок коду, який виконує певне завдання. В Python є два типи функції: вбудовані та користувацькі. Параметр — це значення, яке приймає функція. Аргумент — це значення, яке передається у функцію під час її виклику у програмі. Оператор return використовується для повернення значення функції.

Що таке функція?

Функція — це блок коду, який виконує певну задачу.

Припустимо, нам потрібно написати програму, яка намалює коло, а потім зафарбує його. Ви можете створити дві функції для вирішення цієї задачі:

   функція створення кола;

   функція для зафарбування кола.

Поділ складного завдання на дрібніші частини робить нашу програму простою для розуміння та повторного використання.

Типи функцій в Python

 

Є два типи функцій:

   Функції зі Стандартної бібліотеки Python — це вбудовані функції, доступні для використання.

   Функції користувача — ми можемо створювати власні функції на основі наших вимог.

Оголошення функції в Python

Синтаксис оголошення функції:

Розглянемо детально:

   defключове слово, яке використовується для оголошення функції;

   ім'я_функції — будь-яке ім’я, дане функції;

   параметри — значення, які приймає функція;

   return (необов’язково) — повертає значення з функції.

Розглянемо приклад:

Тут ми створили функцію під назвою greet(). Вона виводить текст Hello, World! на екран. Ця функція не має параметрів і не повертає ніяких значень.

Виклик функції в Python

 

Виклик функції greet(), яку ми створили вище, виконується в наступний спосіб:

Розглянемо ще один приклад використання функції в Python:

Результат:

Hello World!
Outside function

Параметри та аргументи функції в Python

Функція може мати параметри. Параметр — це значення, яке приймає функція. Наприклад:

Якщо ми створюємо функцію з параметрами, нам потрібно надсилати відповідні значення (аргументи) під час виклику функції в програмі. Наприклад:

Тут add_numbers(5, 4) вказує, що параметри num1 та num2 отримають аргументи 5 та 4 відповідно.

Розглянемо ще один приклад:

Результат:

Sum: 9

Ми також можемо викликати функцію з вказанням параметрів у коді:

В Python це називається іменованим аргументом. Вищенаведений рядок коду рівнозначний наступному рядку коду:

Оператор return в Python

 

Функція Python може повертати чи не повертати значення. Якщо потрібно, щоб функція повертала якесь значення, слід використовувати оператор return. Наприклад:

Тут ми повертаємо змінну sum назад у викликаючий об’єкт (caller).

Примітка: Оператор return також позначає завершення виконання функції.

Розглянемо приклад використання оператора return на практиці:

Результат:

Square: 9

Тут ми створили функцію під назвою find_square(). Функція приймає число (num) та повертає квадрат цього числа.

Розглянемо ще один приклад:

Результат:

Sum: 9

Функції зі Стандартної бібліотеки Python

В Python функції зі Стандартної бібліотеки — це вбудовані функції, які можна використовувати напряму в коді. Наприклад:

   print() — виводить текст на екран;

   sqrt() — повертає квадратний корінь числа;

   pow() — виконує операцію піднесення числа до степеня.

Ці бібліотечні функції визначено всередині модуля, тому для їх використання необхідно підключити модуль до програми. Наприклад, функція sqrt() визначена всередині модуля math.

Розглянемо приклад використання бібліотечної функції в Python:

Результат:

Square Root of 4 is 2.0
2 to the power 3 is 8

Тут ми використали:

   math.sqrt(4) — для обчислення квадратного кореня з 4;

   pow(2, 3) — для піднесення числа 2 до степеня 3, тобто .

Зверніть увагу на наступний рядок коду:

Оскільки функцію sqrt() визначено всередині модуля math, нам необхідно підключити його до нашої програми.

Переваги використання функцій

Перевага №1: Повторне використання коду. Ми можемо використати ту саму функцію декілька разів у нашій програмі, що робить наш код багаторазовим. Наприклад:

Результат:

Square of 1 = 1
Square of 2 = 4
Square of 3 = 9

Тут ми створили функцію під назвою get_square() для обчислення квадрата числа. Потім написали цикл for для обчислення квадрата чисел від 1 до 3. Одна й та сама функція обчислення квадрата числа використовується декілька разів у циклі.

Перевага №2: Читабельність коду. Функції допомагають розбивати код на менші частини, щоб зробити програму читабельною та легкою для розуміння.

Параметри та аргументи функції в Python

Параметр — це значення, яке приймає функція. Аргумент — це значення, яке передається у функцію під час її виклику у програмі.

Розглянемо приклад використання параметрів функції в Python:

Результат:

Sum: 5

Тут функція add_numbers() приймає два параметри: a та b. Зверніть увагу на наступний рядок коду:

Параметри a та b отримають відповідні значення 2 та 3.

Параметри зі значеннями за замовчуванням

У Python за допомогою оператора = ми можемо вказати значення за замовчуванням для параметрів функції. Наприклад:

Результат:

Sum: 5
Sum: 10
Sum: 15

Зверніть увагу на визначення функції:

Тут ми вказали значення за замовчуванням 7 та 8 для параметрів a та b відповідно. Ось як працює ця програма:

   add_number(2, 3) — під час виклику функції передаються обидва значення. Отже, ці значення використовуються замість значень за замовчуванням.

   add_number(2) — під час виклику функції передається лише одне значення. Параметру a надається значення 2, а для параметра b використовується значення за замовчуванням.

   add_number() — під час виклику функції значення не передаються. Отже, для обох параметрів a та b використовуються значення за замовчуванням.

Іменовані аргументи в Python

 

Іменовані аргументи є парою “ім’я-значення”, що передається функції. Ім’я та значення пов’язуються з аргументом напряму, тому при передачі аргументу плутанини з порядком не виникає. Наприклад:

Результат:

First Name: Eric
Last Name: Cartman

Зверніть увагу на виклик функції:

Тут ми вказали як імена аргументів, так і їх значення під час виклику функції.

Відповідно, аргумент first_name у виклику функції стає параметром first_name у визначенні функції. Так само аргумент last_name у виклику функції стає параметром last_name у визначенні функції.

У таких сценаріях порядок надання аргументів немає значення.

Довільні аргументи в Python

Іноді ми заздалегідь не знаємо кількість аргументів, які будуть передані в функцію. Щоб впоратися з подібною ситуацією, ми можемо використовувати довільні аргументи в Python.

Довільні аргументи дозволяють передавати різну кількість значень під час виклику функції. Для вказівки даного типу аргументів використовується зірочка (*) перед ім’ям параметра у визначенні функції. Наприклад:

Результат:

Sum = 6
Sum = 13

Тут ми створили функцію find_sum(), яка приймає довільну кількість аргументів. Зверніть увагу на виклики функції:

Ми можемо викликати ту саму функцію з різною кількістю аргументів.

Примітка: Після отримання декількох значень об’єкт numbers починає поводити себе як масив, тому ми можемо використовувати цикл for для доступу до кожного значення.

Рекурсія в Python

Рекурсія — це процес визначення чогось у межах самого себе. Прикладом у фізичному світі може бути розміщення двох дзеркал одне напроти одного. Будь-який об’єкт між ними відображатиметься рекурсивно.

Рекурсивна функція в Python

У Python ми знаємо, що функція може викликати інші функції. Функція може навіть викликати саму себе. Подібні типи конструкцій називаються рекурсивними функціями.

Нижче наведено приклад рекурсивної функції для знаходження факторіала цілого числа.

Примітка: Факторіал числа — це добуток всіх цілих чисел від 1 до вказаного числа. Наприклад, факторіал числа 6 дорівнює 1*2*3*4*5*6 = 720.

Результат:

The factorial of 3 is 6

Тут factorial() є рекурсивною функцією, оскільки вона викликає саму себе. Коли ми викликаємо цю функцію з додатним цілим числом, вона рекурсивно викликатиме себе, зменшуючи число.

Ось зображення, яке показує покроковий процес того, що відбувається:

Наша рекурсія закінчується, коли число зменшується до 1. Це називається базовою умовою.

Кожна рекурсивна функція повинна мати базову умову, яка зупиняє рекурсію, інакше функція буде нескінченно викликати саму себе. Інтерпретатор Python обмежує глибину рекурсії, щоб уникнути нескінченних рекурсій, що призводять до переповнення стека.

За замовчуванням максимальна глибина рекурсії дорівнює 1000. Якщо межа перевищена, то виникає помилка RecursionError. Розглянемо приклад нескінченної рекурсії:

Результат:

Traceback (most recent call last):
File "", line 3, in
File "", line 2, in a
File "", line 2, in a
File "", line 2, in a
[Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded

Переваги рекурсії

 

   Рекурсивні функції роблять код чистішим.

   Складну задача можна розбити на простіші підзадачі за допомогою рекурсії.

   Генерація послідовності простіша з рекурсією, ніж з використанням будь-якої вкладеної ітерації.

Недоліки рекурсії

   Іноді логіку рекурсії важко зрозуміти.

   Рекурсивні виклики дорогі (неефективні), тому що забирають багато пам’яті та часу.

   Рекурсивні функції важко відлагоджувати.

 

Last modified: Tuesday, 19 March 2024, 10:35 AM