10,2 тыс подписчиков
🔤Вопрос: как работает распаковка (*) в Python?
Что происходит, скажем, в случае такого генераторного выражения?
gen = (num for num in range(10))
print(*gen)
🔜Всё проще, чем кажется.
*args и **kwargs — это способы передачи переменного количества аргументов в функцию. Другими словами, они "распаковывают" значения из массива/словаря/множества и т.п. и передают эти значения в функцию.
🔜Пример использования *args:
def test(a, b): # Принимаем параметры a и b
print(a + b) # Выводим их сложение
array = [1, 2] # Создаём массив из двух чисел
test(*array) # Вывод: 3
При записи *array значения для функции были преобразованы в test(1, 2)
🔜Пример использования **kwargs:
def test(a,b): # Принимаем параметры a и b
print(a + b) # Выводим их сложение
dct = {'a':1, 'b':2} # Создаём словарь и записываем ключ-значение
test(**dct) # Вывод: 3
При записи **dct значения для функции были преобразованы в test(a=1, b=2)
🔜Таким же образом можно преобразовать данные в обратном направлении:
def test1(*var): # Принимаем параметры в виде множества
print(var)
test1(1, 2, 3) # Вывод: (1, 2, 3)
def test2(**var): # Принимаем параметры в виде словаря
print(var)
test2(a=1, b=2) # Вывод: {'a': 1, 'b': 2}
Такие вот дела 🖥
Около минуты
13 марта 2024