У цій статті ми на прикладах дізнаємося про аргументи 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 ми можемо передавати змінну кількість аргументів функції за допомогою спеціальних символів. Є два спеціальні символи:
- * аргументи (не аргументи ключових слів)
- ** кварги (аргументи ключових слів)
Ми використовуємо * 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 роблять функцію гнучкою.