5

我们可以简单地使用:

crc = struct.unpack('>i', data)

为什么人们喜欢这样:

(crc,) = struct.unpack('>i', data)

逗号是什么意思?

4

4 回答 4

11

第一个变体返回一个单元素元组:

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
于 2012-12-15T17:14:20.447 回答
2

unpack方法返回一个值元组。使用您描述的语法,可以直接将元组的第一个值加载到变量crc中,而第一个示例引用整个元组,您必须crc[1]稍后在脚本中编写来访问第一个值。

因此,基本上如果您只想使用其中一个返回值,您可以使用此方法将其直接加载到一个变量中。

于 2012-12-15T17:15:51.057 回答
1

逗号表示crc是元组的一部分。(有趣的是,在 Python 中指示元组的是逗号,而不是括号。)(crc,)是具有一个元素的元组。

crc = struct.unpack('>i', data)

crc一个元组。

(crc,) = struct.unpack('>i', data)

分配crc给元组中第一个(也是唯一一个)元素的值。

于 2012-12-15T17:14:08.050 回答
1

(crc,)被认为是单元组。

于 2012-12-15T17:14:51.510 回答