Введение
Зачем нужны *args и **kwargs? В этой статье мы дадим простое объяснение *args и **kwargs в Python. Мы просто разберем эти понятия, чтобы помочь вам понять их значение и использование. К концу у вас будет четкое понимание того, как использовать *args и **kwargs в вашем коде.
🌍*args и **kwargs в Python
*Аргументы
Синтаксис *args
используется для передачи переменного количества аргументов в функцию. Это позволяет вам передавать любое количество дополнительных аргументов, даже если вы не определили их в функции заранее.
Вы можете использовать *args
, когда не уверены, сколько аргументов вам нужно передать, или когда вы хотите передать различное количество аргументов.
Пример
def multiply(*args): result = 1 for num in args: result *= num return result #first time i gabe it 2 args print(multiply(2, 3)) # Output: 6 #sec time: i gave it 3 args print(multiply(4, 5, 6)) # Output: 120 #third time: i gave it 4 print(multiply(2, 3, 4, 5)) # Output: 120
Пример ✌️
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'My', 'Medium')
Вывод
- Что 🤔если я приведу меньше аргументов, то тоже сработает
- Вы можете подумать об этом, гибкий контейнер может содержать любое количество аргументов.
Пример✌️☝️
def myFun(arg1, *argv): print("First argument :", arg1) for arg in argv: print("Next argument through *argv :", arg) myFun('Hello', 'More', 'then', 'Welcome')
Выход
🌍**кваргс
синтаксис используется для передачи переменного количества аргументов ключевого слова в функцию. Это позволяет вам предоставлять именованные аргументы вместе с их значениями при вызове функции.
Вы можете думать об этом как о словаре, вы можете указать любое количество ключей: значений.
Пример☝️
def print_info(**kwargs): for key, value in kwargs.items(): print(key + ": " + value) print_info(name="Alice", age="25") # Output: # name: Alice # age: 25 print_info(city="London", country="UK") # Output: # city: London # country: UK
Выход
Пример✌️
def create_person(**kwargs): person = {} for key, value in kwargs.items(): person[key] = value return person person1 = create_person(name="Alice", age=25, city="London") print(person1) # Output: {'name': 'Alice', 'age': 25, 'city': 'London'} person2 = create_person(name="Bob", occupation="Engineer", country="USA") print(person2) # Output: {'name': 'Bob', 'occupation': 'Engineer', 'country': 'USA'}
Вывод
🌍Полный пример
def process_data(*args, **kwargs): for arg in args: print("Argument:", arg) for key, value in kwargs.items(): print("Keyword argument -", key + ":", value) process_data(1, 2, 3, name="Alice", age=25, city="London")
Выход
Пример✌️
# 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 Ford = car(500, 'red') bmw = car(350, 'black') mb = car(790, 'Blue') # printing the color and speed of the cars print(mb.color) print(bmw.speed)
Выход
Примечание. args
и kwargs
— это просто имена переменных, обычно используемые для *args
и **kwargs
соответственно. Однако вы можете выбрать любые допустимые имена переменных, которые вы предпочитаете, используя *args
и **kwargs
. Важно использовать символы *
и **
, чтобы указать, что вы используете специальный синтаксис для аргументов переменной длины.
*
собирает аргументы, не являющиеся ключевыми словами, в кортеж или распаковывает итерируемый объект в отдельные аргументы.**
собирает аргументы ключевого слова в словарь или распаковывает словарь в отдельные аргументы ключевого слова.
Эти символы обеспечивают гибкость при работе с аргументами переменной длины и позволяют передавать в функции различное количество аргументов.
Не стесняйтесь подключать 🌹me на:
Твиттер: https://twitter.com/Noransaber11
Linkedin: https://www.linkedin.com/in/noran-saber-abdelfattah-6198471ba/
Github: https://github.com/Noransaber
С уважением, Норан🌹