Python * args та ** kwargs (з прикладами)

У цій статті ми на прикладах дізнаємося про аргументи Python * та ** kwargs, їх використання та функції.

У програмуванні ми визначаємо функцію для створення багаторазового коду, який виконує подібну операцію. Для виконання цієї операції ми викликаємо функцію з певним значенням, це значення називається аргументом функції в Python.

Ми рекомендуємо вам прочитати аргументи функції Python та функції Python.

Припустимо, ми визначимо функцію додавання 3 чисел.

Приклад 1: Функція додавання 3 чисел

 def adder(x,y,z): print("sum:",x+y+z) adder(10,12,13)

Коли ми запустимо вищезазначену програму, результат буде

 сума: 35

У наведеній вище програмі ми маємо adder()функцію з трьома аргументами x, y та z. Коли ми передаємо три значення під час виклику adder()функції, ми отримуємо суму 3 чисел як результат.

Давайте подивимося, що відбувається, коли ми передаємо більше 3 аргументів у adder()функцію.

 def adder(x,y,z): print("sum:",x+y+z) adder(5,10,15,20,25)

Коли ми запустимо вищезазначену програму, результат буде

 Помилка TypeEder () приймає 3 позиційні аргументи, але було надано 5

У наведеній вище програмі ми передали функції 5 аргументів adder()замість 3 аргументів, завдяки яким ми отримали TypeError.

Вступ до * args та ** kwargs у Python

У Python ми можемо передавати змінну кількість аргументів функції за допомогою спеціальних символів. Є два спеціальні символи:

  1. * аргументи (не аргументи ключових слів)
  2. ** кварги (аргументи ключових слів)

Ми використовуємо * args та ** kwargs як аргумент, коли не впевнені в кількості аргументів, які передаємо у функціях.

Python * аргументи

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

У функції ми повинні використовувати зірочку *перед іменем параметра для передачі аргументів змінної довжини. Аргументи передаються як кортеж, і ці передані аргументи роблять кортеж усередині функції з тим самим іменем, що і параметр, виключаючи зірочку *.

Приклад 2: Використання * args для передачі функції аргументів змінної довжини

 def adder(*num): sum = 0 for n in num: sum = sum + n print("Sum:",sum) adder(3,5) adder(4,5,6,7) adder(1,2,3,5,6)

Коли ми запустимо вищезазначену програму, результат буде

 Сума: 8 Сума: 22 Сума: 17

У наведеній вище програмі ми використовували * num як параметр, який дозволяє передавати adder()функцію списку аргументів змінної довжини . Усередині функції ми маємо цикл, який додає переданий аргумент і друкує результат. Ми передали 3 різні кортежі зі змінною довжиною як аргумент функції.

Python ** кварги

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

У функції ми використовуємо подвійну зірочку **перед назвою параметра для позначення цього типу аргументу. Аргументи передаються як словник, і ці аргументи створюють словник всередині функції з ім'ям, таким самим, як параметр, виключаючи подвійну зірочку **.

Приклад 3: Використання ** kwargs для передачі аргументу ключового слова змінної функції

 def intro(**data): print("Data type of argument:",type(data)) for key, value in data.items(): print("() is ()".format(key,value)) intro(Firstname="Sita", Lastname="Sharma", Age=22, Phone=1234567890) intro(Firstname="John", Lastname="Wood", Email="[email protected]", Country="Wakanda", Age=25, Phone=9876543210)

Коли ми запустимо вищезазначену програму, результат буде

 Тип аргументу: Ім'я - Сіта Прізвище - Шарма Вік - 22 роки Телефон - 1234567890 Тип аргументу: Ім'я - Джон Прізвище - Деревина Електронна адреса - [email protected] Країна - Ваканда Вік - 25 Телефон 9876543210

У наведеній вище програмі ми маємо функцію intro()з ** даними як параметром. Ми передали функції два словники зі змінною довжиною аргументу intro(). У нас є intro()функція for циклу всередині, яка працює над даними переданого словника і друкує значення словника.

Що слід пам’ятати:

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

Цікаві статті...