Python: too many values to unpack (expected 2,3......)的处理方法

这个问题困扰了很多人,我也曾经在网上寻找过答案,但最终觉得所谓的解答都不理想。原因在于所有的解答都是从自身的问题出发,没有触及到问题的实质。

这个问题其实很简单,就是你的返回值或者赋值语句与返回值或者赋值等式右边的值数目不匹配。

比如:

In [1]: x,y,z = (1,'美女',[3,'b'])

In [2]: x
Out[2]: 1

In [3]: y
Out[3]: '美女'

In [4]: z
Out[4]: [3, 'b']

In [5]:  x,y,z,w = (1,'美女',[3,'b'])

这里赋值就是对的。

但如果改成下面这样,就会报错:

 x,y,z,w = (1,'美女',[3,'b'])

左边比右边元组tuple中的元素多了一个。

相应的,Python提供了一种返回值的机制,即一个函数可以返回多个值。这在别的语言中是很少见的。这既提供了很大的灵活性,但也带来了一些麻烦。麻烦之一就是too many values to unpack。

原因跟上面一样,赋值语句左边的元素和函数返回值个数不匹配。

def func():
    .......
    return x,y,z

a,b,c,d = func()

这里确定会出错,因为func返回值只有三个,但你有四个接收者

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值