Функції — це одна з основних складових 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