我们可以简单地使用:
crc = struct.unpack('>i', data)
为什么人们喜欢这样:
(crc,) = struct.unpack('>i', data)
逗号是什么意思?
答案 0 :(得分:10)
第一个变量返回单元素元组:
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
答案 1 :(得分:2)
unpack
方法返回一个值元组。使用您描述的语法,可以直接将元组的第一个值加载到变量crc
中,而第一个示例具有对整个元组的引用,您必须通过编写crc[1]
来访问第一个值稍后在剧本中。
所以基本上如果您只想使用其中一个返回值,可以使用此方法直接将其加载到一个变量中。
答案 2 :(得分:0)
逗号表示crc
是元组的一部分。 (有趣的是,它是逗号,而不是括号,表示Python中的元组。)(crc,)
是一个包含一个元素的元组。
crc = struct.unpack('>i', data)
使crc
成为一个元组。
(crc,) = struct.unpack('>i', data)
将crc
分配给元组中第一个(也是唯一的)元素的值。
答案 3 :(得分:0)
(crc,)
被视为一元组。