×

Що означає *args та **kwargs у python, та навіщо нам їх використовувати

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

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

*args — це параметр, який приймає неіменовані аргументи, тобто ті, які не мають ключових слів. Наприклад, якщо ви хочете написати функцію, яка додає всі числа, які їй передано, ви можете використати *args:

def add(*args):
    result = 0
    for num in args:
        result += num
    return result

Ця функція буде працювати з будь-якою кількістю чисел:

>>> add(1, 2, 3)
6
>>> add(10, 20)
30
>>> add(5)
5
>>> add()
0

Зверніть увагу, що *args — це кортеж (tuple), який містить всі неіменовані аргументи. Ви можете перебирати його за допомогою циклу for або індексувати його за допомогою квадратних дужок.

**kwargs — це параметр, який приймає іменовані аргументи, тобто ті, які мають ключові слова. Наприклад, якщо ви хочете написати функцію, яка друкує всю інформацію про людину, яку їй передано, ви можете використати **kwargs:

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key} = {value}")

Ця функція буде працювати з будь-якою кількістю іменованих аргументів:

>>> print_info(name="Anna", age=25, occupation="teacher")
name = Anna
age = 25
occupation = teacher
>>> print_info(first_name="John", last_name="Smith")
first_name = John
last_name = Smith
>>> print_info()
>>>

Зверніть увагу, що **kwargs — це словник (dict), який містить всі іменовані аргументи. Ви можете перебирати його за допомогою методу items() або отримувати значення за ключами за допомогою квадратних дужок.

Висновок

*args та **kwargs — це потужні інструменти для створення гнучких і універсальних функцій у python. Вони дозволяють передавати змінну кількість аргументів у функцію без попереднього оголошення їх кількості та імен. Використовуйте *args для неіменованих аргументів і **kwargs для іменованих аргументів. Назва args та kwargs — це лише загальноприйнята конвенція; важлива роль належить знакам * та ** перед ними.

А якщо вас цікавить розробка на Python, то заходьте на мій телеграм канал. Там багато чого цікавого 😉

👍ПодобаєтьсяСподобалось4
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Не розкрита тема по * та /. Про розпаковування.

Підписатись на коментарі