Ответ 1
Да, вы можете использовать синтаксис вызова *args
.
Вместо этого:
buf = struct.pack('d'*NumElements,data) # Returns error
... сделайте следующее:
buf = struct.pack('d'*NumElements, *data) # Works
См. Распаковка списков аргументов в учебнике. (Но на самом деле, прочитайте весь раздел 4.7, а не только 4.7.4, или вы не будете знать, что "Обратное положение..." имеет в виду...) Коротко:
... когда аргументы уже находятся в списке или кортеже, но их нужно распаковать для вызова функции, требующей отдельных позиционных аргументов... напишите вызов функции с помощью * -оператора, чтобы распаковать аргументы из списка или кортежа...