python - 在 struct.pack 中使用 *args

标签 python function variadic-functions

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

def pack_floats(*args):

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

当然,它不起作用,因为 args 是一个元组。如果我想打包三个数字,我会这样调用 pack

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

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

有没有一种方法可以在不在循环内调用 pack 函数的情况下编写 pack_floats 函数?

最佳答案

>>> 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@'

关于python - 在 struct.pack 中使用 *args,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6791050/

相关文章:

python - 如何运行 BigQuery 查询,然后将输出 CSV 发送到 Apache Airflow 中的 Google Cloud Storage?

java - 调用具有简单返回的函数与仅进行检查有区别吗?

c++ - 将可变参数列表插入 vector 中?

在 GCC 中动态创建 va_list - 可以做到吗?

python - headless Chrome 驱动程序不适用于 Selenium

python - python环境中不规则网格上的曲面图

python - 以顺时针/逆时针方式对二维欧几里德点的复杂集合进行排序以形成一个闭合环

c - 在 C 中传递地址

c - C 中的数学函数

python - 为什么在 Python 中不允许使用 foo(*arg, x)?