logo

*args і **kwargs у Python

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

Є два спеціальні символи:



*args і **kwargs у Python

Спеціальні символи, які використовуються для передачі аргументів у Python:

перші мукери
  • *args (аргументи, не пов’язані з ключовими словами)
  • **kwargs (аргументи ключових слів)

Примітка: Ми використовуємо такий символ узагальнення або * — *args АБО **kwargs — як аргумент нашої функції, коли у нас є сумніви щодо кількості аргументів, які ми повинні передати у функції.



Що таке Python *args?

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

  • Синтаксис передбачає використання символу * для прийому змінної кількості аргументів; за домовленістю, воно часто використовується зі словом args.
  • Що *args дозволяє прийняти більше аргументів, ніж кількість формальних аргументів, які ви визначили раніше. с *args , будь-яку кількість додаткових аргументів можна прикріпити до ваших поточних формальних параметрів (включаючи нуль додаткових аргументів).
  • Наприклад, ми хочемо створити функцію множення, яка приймає будь-яку кількість аргументів і здатна перемножувати їх усі разом. Це можна зробити за допомогою *args.
  • Використовуючи *, змінна, яку ми пов’язуємо з *, стає ітерованою, тобто ви можете робити такі дії, як ітерації по ній, запускати деякі функції вищого порядку, такі як карта та фільтр тощо.

Приклад 1:

Програма Python для ілюстрації *args для змінної кількості аргументів



пітон
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>

Вихід:

Hello Welcome to techcodeview.com>

приклад 2:

Програма Python для ілюстрації *args з першим додатковим аргументом

Python3
def myFun(arg1, *argv): print('First argument :', arg1) for arg in argv: print('Next argument through *argv :', arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>

Вихід:

myflixer
First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>

Що таке Python **kwargs?

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

  • Аргумент ключового слова – це місце, де ви надаєте ім’я змінній, коли ви передаєте її у функцію.
  • Можна подумати про kwargs як словник, який зіставляє кожне ключове слово зі значенням, яке ми передаємо разом із ним. Ось чому, коли ми повторюємо kwargs здається, немає жодного порядку, у якому вони були надруковані.

Приклад 1:

Програма Python для ілюстрації *kwargs для змінної кількості аргументів ключового слова. Тут **kwargs приймає аргумент змінної довжини за ключовим словом, переданий викликом функції. for first=’Geeks’ first є ключовим, а ‘Geeks’ є значенням. простими словами, те, що ми призначаємо, є цінним, а кому ми призначаємо, це ключ.

Python
def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>

Вихід:

first == Geeks mid == for last == Geeks>

приклад 2:

Програма Python для ілюстрації **kwargs для змінної кількості аргументів ключового слова з одним додатковим аргументом. Все те саме, але одна зміна полягає в тому, що ми передаємо аргумент, не пов’язаний із ключовим словом, який прийнятний позиційним аргументом (arg1 у myFun). і ключові аргументи, які ми передаємо, прийнятні для **kwargs. просто так?

Python
def myFun(arg1, **kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun('Hi', first='Geeks', mid='for', last='Geeks')>

Вихід:

first == Geeks mid == for last == Geeks>

Використання як *args, так і **kwargs у Python для виклику функції

Приклад 1:

Тут ми передаємо *args і **kwargs як аргумент у функції myFun. Передача *args до myFun просто означає, що ми передаємо позиційні аргументи та аргументи змінної довжини, які містяться в args. тому Geeks переходять до arg1, for pass до arg2, а Geeks переходять до arg3. Коли ми передаємо **kwargs як аргумент myFun, це означає, що він приймає аргументи ключових слів. Тут arg1 є ключовим, а значенням є Geeks, яке передається в arg1, і так само for і Geeks передаються в arg2 і arg3 відповідно. Після передачі всіх даних ми друкуємо всі дані в рядках.

обгортка тексту css
пітон
def myFun(arg1, arg2, arg3): print('arg1:', arg1) print('arg2:', arg2) print('arg3:', arg3) # Now we can use *args or **kwargs to # pass arguments to this function : args = ('Geeks', 'for', 'Geeks') myFun(*args) kwargs = {'arg1': 'Geeks', 'arg2': 'for', 'arg3': 'Geeks'} myFun(**kwargs)>

Вихід:

arg1: Geeks arg2: for arg3: Geeks arg1: Geeks arg2: for arg3: Geeks>

приклад 2:

Тут ми передаємо *args і **kwargs як аргумент у функції myFun. де «гіки», «за», «гіки» передається як *args, і first=Geeks, mid=для, last=Geeks передається як **kwargs і printing в тому ж рядку.

пітон
def myFun(*args, **kwargs): print('args: ', args) print('kwargs: ', kwargs) # Now we can use both *args ,**kwargs # to pass arguments to this function : myFun('geeks', 'for', 'geeks', first='Geeks', mid='for', last='Geeks')>

Вихід:

args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>

Використання *args і **kwargs у Python для встановлення значень об’єкта

Приклад 1: використання Python *args

Python
# defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, *args): # access args index like array does self.speed = args[0] self.color = args[1] # creating objects of car class audi = Car(200, 'red') bmw = Car(250, 'black') mb = Car(190, 'white') # printing the color and speed of the cars print(audi.color) print(bmw.speed)>

Вихід:

red 250>

Приклад 2: використання Python **kwargs

Python
# defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, **kwargs): # access args index like array does self.speed = kwargs['s'] self.color = kwargs['c'] # creating objects of car class audi = Car(s=200, c='red') bmw = Car(s=250, c='black') mb = Car(s=190, c='white') # printing the color and speed of cars print(audi.color) print(bmw.speed)>

Вихід:

red 250>