Skip to main content

Функції

Функції – це фрагменти програми, які багаторазово використовуються. Вони дозволяють дати ім'я певному блоку команд для того, щоб згодом запускати цей блок за вказаним ім'ям у будь-якому місці програми і скільки завгодно разів. Це називається викликом функції.

Функція складається з заголовку та тіла функції. Заголовок функції відповідає за її опис, тобто іменування та вказання необхідних параметрів. Тіло ж функції відповідає за самі дії, які мають виконатися при виклику функції. Заголовок та тіло функції оформлюються, як основна та вкладена інструкції.

Заголовок функції починається зі службового слова def, після якого вказується ім'я функції та список її формальних параметрів у круглих дужках. Завершується заголовок функції символом двокрапка «:». З наступного рядка слідує тіло функції, яке може містити довільну кількість операторів, що записуються з однаковим відступом на початку рядків по відношенню до заголовку функції.

Формат опису функції:

def ім’я_функції(список параметрів):

оператори тіла функції

На прикладі можна бачити, що насправді це дуже просто:

def say_hello():

print('Привіт, Світ!') # блок, що належить функції

# Кінець функції say_hello()

# виклик функції

say_hello()

# ще один виклик функції

say_hello()

Ми визначили функцію з ім'ям say_hello, використовуючи описаний вище синтаксис. Ця функція не приймає параметрів, тому в дужках не оголошені які-небудь змінні.

Параметри – це назви змінних, що вказуються при описі функції і через які будуть передаватися дані з основної програми в функцію. Значення для параметрів будуть вказуватися при виклику функції.

Список параметрів записується у вигляді перерахованих через кому імен змінних. Як було зазначено раніше, функція може і не мати параметрів. Наявність параметрів у функціях надає можливість програмісту робити функції більш гнучкими та універсальними. Параметри виступають вхідними чи допоміжними даними, які будуть використані в обчисленнях, передбачених функцією.

def print_max(a, b):

if a > b:

print(a, 'максимально')

elif a == b:

print(a, 'дорівнює', b)

else:

print(b, 'максимально')

print_max(3, 4) # пряма передача значень

x = 5

y = 7

print_max(x, y) # передача змінних у якості аргументів*

Зверніть увагу на термінологію: імена, вказані при оголошенні функції, називаються параметрами, тоді як значення, які ви передаєте у функцію при її виклику, – аргументами.

Для того, щоб функцією було повернуте певне значення, її тіло повинно містити інструкцію return. Інструкція return являє собою службове слово return, після якого вказується значення чи змінна, значення якої потрібно повернути за функцією.

Формат опису функції з return:

def ім’я_функції(список параметрів):

оператори тіла функції

return результат_функції

Наведемо простий приклад:

def add(x, y):
return x + y

print(add(1, 10)) # 11
print(add('abc', 'def')) # ‘abcdef’

Варто зауважити, що у випадку відсутності в тілі функції інструкції return, тобто не передбачення за функцією повернення ніякого значення, за функцією все рівно буде повернуте значення None.

При описі функцій інколи виникають випадки, що деякий параметр при виклику функції в більшості випадків буде мати одне й те саме значення, але незважаючи на це, все ж можуть бути випадки виклику цієї ж функції, з іншим значенням даного параметру. Наприклад, функція print() має параметр sep, який досить часто не вказується при її виклику, а значенням для нього в такому випадку встановлюється символ пропуску. Таке значення для параметру називається значенням за замовчуванням або ключовим, а сам параметр стає необов’язковим.

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

Ключові параметри у списку параметрів не можуть передувати позиційним параметрам, тобто параметрам без значення за замовчуванням.

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

Для вказання того, що функція зможе приймати змінну кількість позиційних аргументів, при її описі необхідно вказати параметр, перед яким поставити знак «*».

Для вказання того, що функція зможе приймати змінну кількість ключових аргументів, при її описі необхідно вказати параметр, перед яким поставити два знаки «**».

Порядок параметрів в функції Python повинен бути таким:

def ім’я_функції(позиційні, ключові, *список_позиційних, **список_ключових):

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

У Python лямбда-функції створюються за допомогою ключового слова "lambda" та набору параметрів, за якими вона буде приймати аргументи. Наприклад, лямбда-функція, яка повертає квадрат числа, може бути створена таким чином:

square = lambda x: x ** 2

Ця функція може бути викликана, передаючи їй аргумент:

print(square(4)) # 16