在struct.pack中使用*args

MxL*_*evs 2 python function variadic-functions

我刚刚阅读了python中的*args和**kwargs表示法,并决定将它与我使用struct.pack的函数一起使用:

def pack_floats(*args):

   return struct.pack('%df' %len(args), args)

但是,当然,它不起作用,因为args是一个元组.如果我想要打包三个号码,我会打电话给这个号码

struct.pack('3f', 1, 2, 3)

或者,我可以通过循环运行它并一次打包一个数字,但我不知道一次一个值与一次所有值之间是否存在任何性能差异.

有没有办法编写pack_floats函数而不在循环中调用pack函数?

Dan*_* D. 6

>>> import struct
>>> def pack_floats(*args):
...     return struct.pack('%df' %len(args), *args)
... 
>>> pack_floats(0.1,1.2,2.3)
'\xcd\xcc\xcc=\x9a\x99\x99?33\x13@'
Run Code Online (Sandbox Code Playgroud)