元组的装包与拆包
先看下面的代码:
a=1
b=2
a,b=b,a
print(a,b)
我们都知道这样可以很方便的对2个值进行互换,然而这个操作其实涉及到元组的装包与拆包
完全的写法应该是下面这样的:
(a,b)=(b,a)
将a和b放入一个元组中,然后通过元组赋值
但是python会自动进行元组的装包与拆包操作,因此下面2个式子与上面是等价的:
a,b=(b,a)
(a,b)=b,a
理解了元组的自动装包拆包,再回头看函数的返回值,就可以更深入的理解了
函数其实并不能返回多个值,只能返回一个值。
当有多个返回值时,其实是自动将他们放入一个元组中,然后返回这个元组
def f():
return1,2,3
print(f())
此时函数返回值其实是(1,2,3),是个元组
但是当我们用3个变量同时去接收这个返回值时
a,b,c=f()
相当于
a,b,c=(1,2,3)
由于元组自动拆包,造成a=1,b=2,c=3,看似返回了多个值一样
如果不理解这一点,就会搞不清为什么有时候就有括号,有时候就没括号
关键有括号和没括号类型完全不一样,搞混了可是不行的