元组的装包与拆包
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个值去接收,证明了元组确实执行了一个拆包的动作