Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Операторы упаковки и распаковки Python: Функции

В Python операторы * и ** используются, чтобы упаковывать и распаковывать итерабельные объекты и словари. Эти операторы обеспечивают гибкий способ обработки аргументов функций и позволяют писать функции, которые могут принимать переменное количество аргументов. В этом уроке мы узнаем, как пользоваться ими.

Оператор *

Оператор * используется для упаковки и распаковки итерируемых объектов, таких как списки или кортежи. При использовании перед итерируемым объектом, во время вызова функции, оператор * распаковывает его. Элементы итерируемого объекта передаются в качестве аргумента функции:

def sum_of_values(a, b, c):
    return a + b + c

values = [1, 2, 3]
result = sum_of_values(*values)
print(result)
# 6

В этом примере оператор * используется, чтобы распаковывать список значений и передавать его элементы в качестве аргументов функции sum_of_values.

Также оператор * можно использовать, чтобы упаковывать итерабельные переменные. Это позволяет присваивать их отдельным переменным:

my_list = [1, 2, 3, 4]
a, b, *c = my_list
print(a, b, c)
# 1 2 [3, 4]

В этом примере оператор * упаковывает оставшуюся часть списка my_list в переменную c.

Оператор * можно использовать для распаковки итерируемого списка в новый список или кортеж:

my_list = [1, 2, 3]
new_list = [*my_list, 4, 5, 6]
print(new_list)
# [1, 2, 3, 4, 5, 6]

my_tuple = (1, 2, 3)
new_tuple = (*my_tuple, 4, 5, 6)
print(new_tuple)
# (1, 2, 3, 4, 5, 6)

В этих примерах оператор * используется для распаковки итераций my_list и my_tuple в новые списки и кортежи с добавлением дополнительных значений.

Оператор **

Оператор ** используется для упаковки и распаковки словарей. При использовании перед словарем во время вызова функции оператор ** распаковывает пары ключ-значение словаря в аргументы ключевых слов, которые могут быть переданы в функцию:

def print_details(name, age):
    print(f"Name: {name}")
    print(f"Age: {age}")

details = {"name": "John", "age": 30}
print_details(**details)
# Name: John
# Age: 30

В этом примере оператор ** используется для распаковки словаря details и передачи его пар ключ-значение в качестве аргументов ключевых слов в функцию print_details.

Оператор ** также можно использовать для создания словаря из последовательности пар ключ-значение:

dict1 = {"a": 1, "b": 2}
dict2 = {"c": 3, "d": 4}

combined_dict = {**dict1, **dict2}

print(combined_dict)
# {"a": 1, "b": 2, "c": 3, "d": 4}

В приведенном выше коде определяются два словаря dict1 и dict2. А оператор ** используется для распаковки их пар ключ-значение и объединения в один словарь combined_dict.

Если ключи дублируются, то значение из второго словаря перезапишет значение из первого словаря.

Выводы

В этом уроке мы научились упаковывать и распаковывать итерабельные объекты и словари с помощью операторов * и **. Они обладают большими возможностями и используются для более удобной работы с итерируемыми объектами и словарями. Они позволяют производить упаковку и распаковку, обеспечивая гибкий способ обработки аргументов функций.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 2 мая

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»