У Python використання гнучких параметрів: *args та **kwargs

Функції — це одна з основних складових Python, і вони дозволяють виконувати різні завдання. Однак іноді нам важко заздалегідь сказати, скільки аргументів буде передано функції. Як зробити функції більш гнучкими в таких випадках?

Відповідь: *args і **kwargs.

У цьому тексті ми розглянемо, що це за конструкції, коли їх використовувати і як працювати з ними, на прикладах. Готові? Починаємо!

🎯 Параметри функцій: Фіксовані чи гнучкі?

Зазвичай, коли ми створюємо функцію, ми визначаємо, скільки параметрів вона повинна приймати:

def selamla(isim):
print(f"Merhaba, {isim}!")

Тепер, викликаючи цю функцію, ми можемо передати один параметр:

selamla("Deniz") # ✅

Але якщо спробуємо передати два параметри:

selamla("Deniz", "Ali") # ❌ Помилка: забагато аргументів

Тут ми отримуємо помилку, бо функція очікує лише один параметр.

Саме для таких випадків і були створені конструкції *args і **kwargs. Якщо ви не знаєте, скільки аргументів буде передано, ці конструкції дозволяють зробити функцію більш гнучкою.

🔹 *args: Будь-яка кількість позиційних аргументів

За допомогою *args можна передавати функції будь-яку кількість позиційних аргументів. Всі ці аргументи обробляються як кортеж:

def topla(*args):
print(args)

topla(1, 2, 3, 4)

Виведеться: (1, 2, 3, 4)

А тепер давайте додамо обчислення суми переданих значень:

def topla(*args):
print("Toplam:", sum(args))

topla(5, 10) # 15
topla(1, 2, 3, 4, 5) # 15

Як видно, ми можемо викликати функцію, не знаючи заздалегідь кількість аргументів. *args обробляється як кортеж.

🔹 **kwargs: Будь-яка кількість іменованих аргументів

**kwargs дозволяє передавати функціям іменовані аргументи у форматі ключ=значення. Ці аргументи обробляються як словник:

def kisi_bilgisi(**kwargs):
for anahtar, deger in kwargs.items():
print(f"{anahtar}: {deger}")

kisi_bilgisi(ad="Ayşe", yas=28, sehir="İzmir")

В цьому випадку, кількість переданих параметрів не визначена заздалегідь, що дуже зручно при роботі з опціональними параметрами.

✨ Підсумок

*args і **kwargs допомагають робити функції Python більш гнучкими, перевикористовуваними та динамічними. Вони дозволяють зручно працювати з функціями, які мають змінну кількість аргументів, що особливо корисно при створенні модульних конструкцій, розробці API чи написанні функцій з опціональними параметрами.

Перекладено з: Python’da Esnek Parametre Kullanımı : args ve *kwargs