在 Python 3 中使用 struct.calcsize() 和 len() 有区别吗?

Is there a difference between using struct.calcsize() and len() in Python 3?

使用 struct.calcsize() 是否总是与简单地使用 len() 获取结构中的字节数相同?

例如:

>>> import struct
>>> a = struct.pack('I', 107)
>>> len(a)
4
>>> struct.calcsize('I')
4 

对于我的一小部分测试,他们似乎同意。有理由偏爱其中之一吗?互换使用它们是否安全?

struct.calcsize 不需要您实际打包数据。这样可以节省时间和内存,如果您实际上没有任何数据要打包,会更方便。

如果您有一个格式字符串,并且想知道以该格式 打包数据的结果 有多大,请使用 struct.calcsize。如果您已经打包数据并且想知道它有多大,请使用 len.