值是一个数组; eventTokens 是一个字符串(值的第一个元素)。双重任务有什么作用? (eventToken1& eventToken2的值是什么?)
values = data.split("\x01")
eventTokens = values.pop(0)
eventToken1, eventToken2 = eventTokens
我已完成输出任务(在Python源代码上),结果如下:
eventTokens is →☹
eventToken1 is →
eventToken2 is ☹
我得出结论,vars以某种方式拆分了初始字符串。但是,如果我尝试编译(显然)类似的东西:
arr = ["some", "elements", "inarray"]
c = arr.pop(0)
a, b = c
print c
print a
print b
导致异常: ValueError:解压缩的值太多。
注意:print
不是测试环境中的参数化方法
答案 0 :(得分:3)
c = arr.pop(0)
在此处返回"some"
,但您尝试在此步骤中将值分配给2个变量(其中有4个文字),因此a, b = c
失败。
试试这个
arr = ["some", "elements", "inarray"]
c = arr.pop(0)
a, b = arr
print c
print a
print b
答案 1 :(得分:3)
由于eventTokens
是一个长度为2的字符串,因此可以将其解压缩为两个单字符串:
>>> a, b = 'ab'
>>> a
'a'
>>> b
'b'
但是,字符串中的字符数必须与要解压缩的变量数相匹配:
>>> a, b = 'abcd'
ValueError: too many values to unpack
请注意,您可以解压缩到一个变量!
>>> a, = 'x'
>>> a
'x'
>>> a, = 'xyz'
ValueError: too many values to unpack
答案 2 :(得分:2)
变量解包是Python在一行中进行多变量赋值的能力。约束条件是表达式右侧的可迭代必须与左侧变量的长度相同。否则,您会收到too many
或to little values to unpack
例外。
如果您有一个像eventTokens
这样的字符串2,那么您可以:
>>>a,b = 'ab'
>>>a
'a'
>>>b
'b'
这是非常不安全的代码。如果以某种方式eventTokens
增长大于两个元素,代码将引发异常,您的程序将被关闭。
希望这有帮助!