@Goblin1101

Что означает запись в скобках сразу после инициализации?

return namedtuple('Games', games_dict.keys())(*games_dict.values())

Только недавно программирую на питоне и столкнулся с такой строкой. Конкретно интересует выражение (*games_dict.values()), почему оно идет в круглых скобках сразу после других. Мыслью то я понимаю, что оно предназначено для передачи неизвестного количества переменных в качестве значений, но почему именно так расположено не могу понять. Скорее всего это что-то донельзя простое, чего названия я просто не знаю.
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
Действительно, все очень просто.
namedtuple - это функция которая возвращает объект класса namedtuple, который является подсклассом встроенного tuple. Где первый параметр, это имя типа данных. Второй это параметры.
from collections import namedtuple
Point = namedtuple("Point", ['x','y'])
point = Point(2,4)
print(point)

Теперь представим есть некий словарь и просто перепишем в одну строчку, с распаковкой параметров '*'.
d = {
    'x':2,
    'y':4
}

print(namedtuple('Point',d.keys())(*d.values()))

d.keys() это коллекция ключей строк, как в пошаговом примере, *d.values() это распакованная последовательность значений.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
гугли *args и **kwargs
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы