赋值
a,b,c,d = 'spam' a = 's',b = 'p',c= 'a',d = 'm' //序列赋值支持右侧任何可迭代的对象,赋值目标中的项数与主体项数必须相同
spam,ham = 'yun','yus' spam = 'yun',ham = 'yus'
l = [1,2,3,4] ( front,l = l[0],l[1:] ) 等价于 front = l[0],l = l[1:] ----》front = 1,l = [2,3,4]
a,*b = 'spam' a = 's' b = ['p','a','m']
*a,b = 'spam' b = 'm' b = ['p','a','m']
a,*b,c = [1,2,3,4] a = 1,b = [2,3],c = 4
注:带*的无论有几个元素,都会返回一个列表,元素为零则返回空列表
不能有多个带*的值
注:对于不可变对象而言,直接赋值共享没问题,因为不可变对象不支持在原处修改,但是,对于可变对象,直接修改可能会导致所有指向该位置的引用全部发生改变
eg:不可变对象a = 1
b = a
a = 2
--->a = 2,b = 1
可变对象
l = [1,2,3,4]
r = l
l[1] = 5
---->l = [1,5,3,4] r = [1,5,3,4]
所以,对于可变对象,尽量避免直接在原处修改,采用单独的语句来改变数值