Перейти до змісту

Параметри та аргументи функцій

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

При роботі з функціями важливо розрізняти:

  • параметри - це змінні, які використовуються під час створення функції
  • аргументи - це фактичні значення (дані), що передаються функції під час виклику

Параметри бувають обов'язкові та необов'язкові.

def f(a, b):
    pass
def f(a=None):
    pass

Аргументи бувають позиційні та іменовані.

def summ(a, b):
    return a + b

summ(1, 2)
def summ(a, b):
    return a + b

summ(a=1, b=2)

Незалежно від того, як створено параметри, під час виклику функції їм можна передати як іменовані, так і позиційні аргументи. При цьому обов'язкові параметри потрібно передавати в будь-якому випадку, будь-яким способом (позиційним або іменованим), а необов'язкові можна передавати або ні (якщо передавати, то теж позиційним або іменованим).

Типи параметрів і аргументів будуть розглянуті більш детально пізніше.

Щоб функція приймала вхідні значення, її потрібно створити з параметрами:

def check_passwd(username, password):
    if len(password) < 8:
        print("Пароль надто короткий")
        return False
    elif username in password:
        print("Пароль містить ім'я користувача")
        return False
    else:
        print(f"Пароль для користувача {username} встановлено")
        return True

У цьому випадку, у функції два параметри: username і password.

Функція перевіряє пароль та повертає False, якщо перевірки не пройшли та True якщо пароль пройшов перевірки:

In [2]: check_passwd("nata", "12345")
Пароль надто короткий
Out[2]: False

In [3]: check_passwd("nata", "12345lsdkjflskfdjsnata")
Пароль містить ім'я користувача
Out[3]: False

In [4]: check_passwd("nata", "12345lsdkjflskfdjs")
Пароль для користувача nata встановлено
Out[4]: True

При такому визначенні функції треба обов'язково передати обидва аргументи. Якщо передати лише один аргумент, виникне помилка:

In [5]: check_passwd("nata")
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-e07773bb4cc8> in <module>
----> 1 check_passwd("nata")

TypeError: check_passwd() missing 1 required positional argument: "password"

Аналогічно, виникне помилка, якщо передати три та більше аргументів.