【发布时间】:2012-12-03 09:06:33
【问题描述】:
我们可以简单地使用:
crc = struct.unpack('>i', data)
为什么人们喜欢这样:
(crc,) = struct.unpack('>i', data)
逗号是什么意思?
【问题讨论】:
我们可以简单地使用:
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,) 被视为单元组。
【讨论】: