Многие люди, которые уже знают о itertools.product, сталкиваются с тем фактом, что он ожидает отдельные аргументы для каждой входной последовательности, а не, например, список списков. Принятый ответ показывает, как справиться с этим с помощью *. Однако использование * здесь для распаковки аргументов принципиально не отличается от любого другого использования в вызове функции. Пожалуйста, ознакомьтесь с Расширением кортежей в аргументы в этом разделе (и используйте это вместо этого, чтобы закрывать повторяющиеся вопросы, при необходимости).