Функція. Поняття функції. Загальна форма. Приклади оголошення та використання функцій
Зміст
- 1. Що таке функція? Визначення функції. Переваги застосування функцій
- 2. Інструкція def. Загальна форма оголошення функції в Python. Створення функції
- 3. Виклик функції
- 4. Приклад оголошення та використання функції без параметрів
- 5. Приклад оголошення та використання функції, яка отримує 1 параметр
- 6. Приклад оголошення та використання функції, яка отримує параметр та повертає результат
- 7. Приклад оголошення функції в інструкції if. Реалізація альтернативи
- 8. Поліморфізм в функціях. Приклади
- 9. Використання локальних змінних всередині функцій. Приклад
Пошук на інших ресурсах:
1. Що таке функція? Визначення функції. Переваги застосування функцій
Функція – це засіб (спосіб) групування фрагментів програмного коду таким чином, що цей програмний код може викликатись багатократно з допомогою використання імені функції.
Використання функцій у програмах на Python дає наступні взаємозв’язані переваги:
- уникнення повторення однакових фрагментів коду в різних частинах програми;
- зменшення надлишковості вихідного коду програми. Як наслідок, зменшення логічних помилок програмування;
- покращене сприйняття вихідного коду програми у випадках, де замість блоків численних інструкцій (операторів) викликаються імена готових протестованих функцій. Це, в свою чергу, також зменшує кількість помилок;
- спрощення внесення змін у повторюваних блоках коду, які організовані у вигляді функцій. Достатньо внести зміни тільки в тілі функції, тоді в усіх викликах даної функції ці зміни будуть враховані;
- з допомогою функцій зручно розбивати складну систему на більш прості частини. Отже, функції – зручний спосіб структурування програми;
- зменшення трудозатрат на програмування, а, отже, підвищення продуктивності праці програміста.
У мові програмування Python для функцій характерні наступні особливості:
- функції можуть повертати результат;
- функції можуть отримувати вхідні параметри, які впливають на отриманий результат.
⇑
2. Інструкція def. Загальна форма оголошення функції в Python. Створення функції
Щоб функцію можна було використовувати у програмі, її потрібно створити (оголосити). У мові Python створення (або оголошення) функції виконується з допомогою інструкції def. Якщо інтерпретатор досягає інструкції def, він створює новий об’єкт функції та зв’язує упакований код функції з її іменем.
Функція може повертати або не повертати значення. Якщо функція не повертає значення, то вважається, що вона автоматично повертає об’єкт None, який ігнорується. У цьому випадку інструкція return необов’язкова. Загальна форма такої функції наступна:
def <name>(arg1, arg2, ..., argN):
<statement1>
<statement2>
...
<statementN>
де
- name – ім’я функції, з яким буде зв’язано об’єкт функції та список параметрів (arg1, arg2, …, argN). Об’єкт функції отримує ім’я name і створюється під час виконання (у Python немає часу компіляції);
- arg1, arg2, argN – список параметрів, які може отримувати функція. Функція також може бути без параметрів;
- statement1, statement2, statementN – одна або декілька інструкцій, що слідують з відступами відносно def.
Якщо функція повертає значення, то її загальна форма наступна
def <name>(arg1, arg2, ..., argN): <statement1> <statement2> ... <statementN> return <value>
тут
- name – ім’я функції;
- arg1, arg2, …, argN – параметри функції (якщо такі є);
- statement1, statement2, statementN – інструкції, що реалізовані в тілі функції;
- value – значення, яке повертає функція.
Визначення функції з допомогою інструкції def може бути реалізовано всередині інших інструкцій, наприклад, всередині інструкції if.
⇑
3. Виклик функції
Після того, як функція створена (оголошена), можна здійснювати її виклик. Виклик функції здійснюється з допомогою її імені та переліку параметрів.
Наприклад. Нехай оголошено наступну функцію
def Mult2(a, b): return a*b
то її виклик може бути, наприклад, таким
res = Mult2(7,9)
У результаті, значення res = 63.
Інтерпретатор, зустрівши інструкцію def виконує наступні дії:
- створює новий об’єкт функції з іменем Mult2;
- упаковує програмний код функції та зв’язує об’єкт з іменем Mult2;
- викликає функцію в програмі.
Якщо задати
res = Mult2('abc',3)
то res = ‘abcabcabc’.
⇑
4. Приклад оголошення та використання функції без параметрів
Нижче наведено приклад оголошення та використання функції, що не містить параметрів. Функція має ім’я Hello і виводить на екран текст “Hello world!” 3 рази.
# Функції без параметрів. # Оголосити функцію з іменем Hello(), # яка виводить "Hello world!" на екран. def Hello(): print("Hello world!") # Викликати функцію Hello() в циклі while i=0 while i<3: Hello() i=i+1
⇑
5. Приклад оголошення та використання функції, яка отримує 1 параметр
Нижче наведено приклад створення та використання функції Print3(), яка отримує один параметр і виводить його на екран 3 рази.
# Оголосити функцію з іменем Print5(), # яка виводить значення параметру t на екран 3 рази def Print3(t): i=0 while i<3: print(t) i=i+1 # Викликати функцію Print3() для різних типів параметрів Print3('abc') Print3(2.85) Print3(-88) Print3(True)
Результат виконання програми
abc abc abc 2.85 2.85 2.85 -88 -88 -88 True True True
Як видно з результату, у мові Python тип параметру, що передається у функцію, може бути будь-яким. Інтерпретатор розпізнає його на основі об’єкту, що передається в якості параметру.
⇑
6. Приклад оголошення та використання функції, яка отримує параметр та повертає результат
Нижче наводиться приклад функції, яка отримує параметр та повертає результат. Функція здійснює реверсування рядка.
# Функція, яка реверсує рядок def Reverse(s): s2 = '' i = len(s)-1 while i>=0: s2 = s2 + s[i] i = i-1 return s2 # Виклик функції Reverse() s1 = "abcdef" s2 = Reverse(s1) # s2 = 'fedcba' print("s2 = ", s2)
Результат роботи програми
s2 = fedcba
⇑
7. Приклад оголошення функції в інструкції if. Реалізація альтернативи
Визначення функції з допомогою засобу def може бути вкладене в іншу інструкцію, наприклад, інструкцію if. У цьому випадку виникає альтернатива при виконанні програми.
Приклад. У прикладі на основі введеного значення n створюється функція Fn(), яка обчислює тригонометричний вираз за наступним правилом:
- sin(x)*cos(x), якщо n==1;
- sin(x2)+cos(x), якщо n==2;
- 1-sin(x), в противному випадку.
Потім ця функція викликається для заданого значення x.
# За заданим значенням n визначити функцію Fn(), # яка обчислює: # sin(x)*cos(x), якщо n==1 # sin(x*x)+cos(x), якщо n==2 # 1-sin(x), в іншому випадку # Імпортувати математичну бібліотеку import math # Ввести значення n n = int(input('n = ')) x = float(input('x = ')) # Визначити код функції Fn() if (n==1): def Fn(x): print("n==1. res = sin(x)*cos(x).") return math.sin(x)*math.cos(x) else: if (n==2): def Fn(x): print("n==2. res = sin(x*x)+cos(x)") return math.sin(x*x)+math.cos(x) else: def Fn(x): print("n==3. res = 1-sin(x)") return 1-math.sin(x) # Виклик функції Fn() res = Fn(x) print("res = ", res)
Результат виконання програми
n = 3 x = 1.2 n==3. res = 1-sin(x) res = 0.06796091403277371
⇑
8. Поліморфізм в функціях. Приклади
У мові Python усі дані представлені об’єктами. Об’єкти визначають синтаксичний зміст операції. Підтримка операцією різних типів об’єктів забезпечується завдяки поліморфізму. Поліморфізм – залежність змісту операції від типу об’єктів до яких вона застосовується. Поліморфізм у функції проявляється при передачі параметрів у функцію. Параметри функції є об’єкти, які можуть бути різних типів. Параметри функції використовуються в операціях, які можуть оперувати різними типами. У мові Python цей процес називається динамічною типізацією.
Наприклад, операція * може застосовуватись як до чисел, так і до рядків. У випадку з числами ця операція означає множення. У випадку з рядками ця операція дозволяє повторити рядок задану кількість разів.
Приклад 1. Демонструється функція Mult(), яка отримує два параметри a, b. Для отриманих параметрів виконується операція *.
# Поліморфізм у функціях # Функція Mult() def Mult(a,b): return a*b # Виклик функції Mult() для різних типів об'єктів # 1. Для чисел x = 8 y = 5 z = Mult(x,y) # z = 40 # 2. Для рядків s1 = "Hello " n = 3 s2 = Mult(s1,n) # s2 = 'Hello Hello Hello'
Приклад 2. Демонструється функція Summ(), яка отримує два параметри a, b. Функція повертає результат операції + над параметрами.
# Поліморфізм у функціях # Функція Summ() def Summ(a,b): return a+b # Виклик функції Summ() для різних типів об'єктів # 1. Для чисел x = 18 y = 3 z = Summ(x,y) # z = 40 # 2. Для рядків s1 = "Hello " s2 = "world!" s3 = Summ(s1,s2) # s3 = 'Hello world!'
⇑
9. Використання локальних змінних всередині функцій. Приклад
Всередині функції можуть бути оголошені локальні змінні. Локальна змінна – це ім’я (об’єкт), що є доступне тільки всередині визначення функції (інструкції def). Локальна змінна існує тільки під час виконання функції.
У тілі будь-якої функції локальні змінні визначаються на основі наступних ознак:
- якщо змінна розміщується в лівій частині операції присвоювання;
- якщо змінна (ім’я) є параметр (аргумент) функції;
- якщо змінна є ітератором в циклі for.
Приклад. У прикладі створюється функція SquareTriangle(), яка обчислює площу трикутника за його сторонами. Довжини сторін трикутника з іменами a, b, c є вхідними параметрами функції. Якщо з a, b, c неможливо утворити трикутник, то функція повертає значення None.
Потім відбувається виклик функції SquareTriangle() та обробка результату повернення з функції.
# Обчислити площу трикутника на основі його довжин a,b,c # Імпортувати математичну бібліотеку import math def SquareTriangle(a,b,c): if (((a+b)<c) or ((b+c)<a) or ((a+c)<b)): return None else: p = (a+b+c)/2 # це є локальна змінна p s = math.sqrt(p*(p-a)*(p-b)*(p-c)) # локальна змінна s return s # Використання функції SquareTriangle() s = SquareTriangle(5,4,5) if (s==None): print("The values of a, b, c is incorrect.") else: print("s = ", s)
Результат виконання програми
s = 9.16515138991168
⇑