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

Параметри і аргументи

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

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

Напишемо функцію з одним параметром:

def say_hello(name):
    print('Hello,', name)
say_hello('Вася')
say_hello('Петя')

Ми визначили функцію "say_hello" з одним параметром "name". Потім викликали цю функцію з аргументом "Вася" і ще раз з аргументом "Петя". У результаті виконання даного коду отримаємо наступне:

Hello, Вася
Hello, Петя
>>>

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

Якщо параметрів у функції більше одного, перераховуємо їх через кому:

def print_salary(name, base_salary):
    salary = base_salary - base_salary * 0.17 # -17% tax
    print(name, ':', salary)

print_salary('Вася', 1000)

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

Вася : 830.0
>>>

Функції передають таку ж кілкість аргументів, як і кількість параметрів:

>>> print_salary('Вася')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: print_salary() missing 1 required positional argument: 'base_salary'
>>>

Помилку можна прочитати так:

При виклику функції print_salary пропущено 1 обов'язковий аргумент: 'base_salary'

>>> print_salary('Вася', 1000, 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: print_salary() takes 2 positional arguments but 3 were given
>>>

Читаємо так:

Функція print_salary приймає 2 аргументи, а передано 3