Параметри та аргументи функцій¶
Як правило, функція повинна виконувати якісь дії з вхідними значеннями і повертати результат.
При роботі з функціями важливо розрізняти:
- параметри - це змінні, які використовуються під час створення функції
- аргументи - це фактичні значення (дані), що передаються функції під час виклику
Параметри бувають обов'язкові та необов'язкові.
Аргументи бувають позиційні та іменовані.
Незалежно від того, як створено параметри, під час виклику функції їм можна передати як іменовані, так і позиційні аргументи. При цьому обов'язкові параметри потрібно передавати в будь-якому випадку, будь-яким способом (позиційним або іменованим), а необов'язкові можна передавати або ні (якщо передавати, то теж позиційним або іменованим).
Типи параметрів і аргументів будуть розглянуті більш детально пізніше.
Щоб функція приймала вхідні значення, її потрібно створити з параметрами:
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"
Аналогічно, виникне помилка, якщо передати три та більше аргументів.