於黾

元组的装包与拆包

Python中,元组装包拆包是自动的,不需要任何函数,导致很多人对于函数返回值一会有括号一会没括号非常迷惑

先看代码:

a=1,2,3
#它其实等价于下面的代码
a=(1,2,3)
#因为等号左边只有1个变量,而等号右边有3个值,因此自动装包成为一个元组

再看下面的代码:

a,b,c=(1,2,3)
#自动拆包,得到a=1,b=2,c=3

当函数return的时候,其实只能return一个值,并不能return多个值

有人会问,我return了多个值也没有报错啊,运行很正常

那正是因为Python将多个返回值自动装包造成的

因此当你返回多个变量,而外面只用一个变量去接收,会接收到一个元组

而当你用多个变量去接,就能对应的接收到每个值,这是因为自动拆包

理解了这一点,对于理解函数返回值、字典中的键值对等等都是有帮助的

=========================================================

为了加强理解,再看最后一组代码:

a=10
b=20
a,b=b,a,1

执行会报错:too many values to unpack

这里很明显的,告诉你元组里有3个值需要拆包,而你只用2个值去接收,证明了元组确实执行了一个拆包的动作