Python: Урок 13. Функції

Функції в програмуванні можна представити як ізольований блок коду, звернення до якого в процесі виконання програми може бути багаторазовим. Навіщо потрібні такі блоки інструкцій? У першу чергу, щоб скоротити обсяг вихідного коду: раціонально винести часто повторювані вирази в окремий блок і, потім, у міру потреби, звертатися до нього.

Уявімо собі таку ситуацію. Потрібно написати скрипт, який при виконанні повинен три рази запитувати у користувача різні дані, але виконувати з ними одні й ті ж дії.
a = int(input('Уведіть перше число: '))
b = int(input('Уведіть друге число: '))
if a > b:
    print(a-b)
else:
    print(b-a)
c = int(input('Уведіть перше число: '))
d = int(input('Уведіть друге число: '))
if c > d:
    print(c-d)
else:
    print(d-c)
e = int(input('Уведіть перше число: '))
f = int(input('Уведіть друге число: '))
if e > f:
    print(e-f)
else:
    print(f-e) 
Дана програма знаходить модуль різниці двох чисел. Очевидно, що такий запис вихідного коду не раціональний: виходять три майже однакових блоки коду. Здавалося б, чому б не використати цикл while для організації повторення?
i = 0
while i < 3:
    a = int(input('Уведіть перше число: '))
    b = int(input('Уведіть друге число: '))
    if a > b:
        print(a-b)
    else:
        print(b-a)
    i = i + 1 

Проте, в цьому випадку є один нюанс. Введені користувачем дані завжди зв'язуються з змінними a і b. При кожному витку циклу колишні дані втрачаються. Що ж робити, якщо всі шість чисел, введених користувачем треба зберегти для подальшого використання в програмі? Розглянемо рішення цієї задачі з використанням функції.
def diff():
    m = int(input('Уведіть перше число: '))
    n = int(input('Уведіть друге число: '))
    if m > n:
        print(m-n)
    else:
        print(n-m)
    return m,n
a,b = diff()
c,d = diff()
e,f = diff()
def - це інструкція (команда) мови програмування Python, що дозволяє створювати функцію. diff - це ім'я функції, яке (так само як і імена змінних) може бути майже будь-яким, але бажано осмисленим. Після в дужках перераховуються параметри функції. Якщо їх немає, то дужки залишаються порожніми. Далі йде двокрапка, що позначає закінчення заголовка функції (аналогічно з умовами та циклами). Після заголовка з нового рядка і з відступом слідують вирази тіла функції. У кінці тіла функції присутня інструкція return (її може й не бути), яка повертає результат, або результати (як у вищевказаному прикладі) в основну гілку програми. У даному випадку, якби у функції не було інструкції return, то в основну програму нічого б не поверталося, і змінним a і b (c і d, а також e і f) числові значення не присвоювалися б.

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

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

Практична робота


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

Зміст курсу

Вступ
Урок 1. Історія мов програмування. Компіляція та інтерпретація
Урок 2. Знайомство з Python і середовищами програмування
Урок 3. Типи даних в програмуванні. Визначення змінної
Урок 4. Логічні вирази
Урок 5. Умовний оператор. Інструкція if
Урок 6. Множинне розгалуження
Урок 7. Цикл while
Урок 8. Введення даних з клавіатури
Урок 9. Рядки як послідовності символів
Урок 10. Списки - змінювані послідовності
Урок 11. Cловники
Урок 12. Цикл for
Урок 13. Функції
Урок 14. Параметри і аргументи функцій. Локальні та глобальні змінні
Урок 15. Перевірочна робота з основ програмування на Python

Коментарі

Популярні дописи з цього блогу

Азбука Морзе Українською

Python: Урок 4. Логічні вирази

Python: Урок 3. Типи даних в програмуванні. Визначення змінної