我们可以简单地使用:
crc = struct.unpack('>i', data)
为什么人们喜欢这样:
(crc,) = struct.unpack('>i', data)
逗号是什么意思?
第一个变体返回一个单元素元组:
In [13]: crc = struct.unpack('>i', '0000')
In [14]: crc
Out[14]: (808464432,)
要获得该值,您必须编写crc[0]
.
第二个变体解包元组,使您能够编写crc
而不是crc[0]
:
In [15]: (crc,) = struct.unpack('>i', '0000')
In [16]: crc
Out[16]: 808464432
该unpack
方法返回一个值元组。使用您描述的语法,可以直接将元组的第一个值加载到变量crc
中,而第一个示例引用整个元组,您必须crc[1]
稍后在脚本中编写来访问第一个值。
因此,基本上如果您只想使用其中一个返回值,您可以使用此方法将其直接加载到一个变量中。
逗号表示crc
是元组的一部分。(有趣的是,在 Python 中指示元组的是逗号,而不是括号。)(crc,)
是具有一个元素的元组。
crc = struct.unpack('>i', data)
做crc
一个元组。
(crc,) = struct.unpack('>i', data)
分配crc
给元组中第一个(也是唯一一个)元素的值。
(crc,)
被认为是单元组。