【问题标题】:what does the comma mean in python's unpack?python解包中的逗号是什么意思?
【发布时间】:2012-12-03 09:06:33
【问题描述】:

我们可以简单地使用:

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

为什么人们喜欢这样:

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

逗号是什么意思?

【问题讨论】:

    标签: python comma unpack


    【解决方案1】:

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

    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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        使crc 成为一个元组。

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

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

        【讨论】:

          【解决方案4】:

          (crc,) 被视为单元组。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-09-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-05-15
            • 1970-01-01
            • 1970-01-01
            • 2015-02-13
            相关资源
            最近更新 更多