赋值是将一个对象的地址赋值给一个变量,往往可以通过直接赋值、引用赋值、拷贝值来实现。
赋值的变量=值 ,赋值的变量一定在等号左边

  • 一、赋值
  1. 直接赋值:等号左右两边分别是变量和值
a=4
  1. 平行赋值:等号左右两边的变量和值可以是多个,但是要保证数量一致。
a,b=4,5 
这样一个赋值表达式,就实现了 a=4 ,b=5 的这么一个结果了。

用处:
不知道大家了解不了解java,在做冒泡排序的时候需要将元素调换下位置,在java中是这样写的,需要一个临时变量接受上一个参数传递的值,然后再把临时变量传给下一个参数。
if (arr[j]>arr[j+1]){
         int temp=arr[j];
         arr[j]=arr[j+1];
         arr[j+1]=temp; }

如果用平衡赋值的话,一行代码就可以直接可以实现
if arr[i] > arr[i + 1]:
arr[i], arr[i + 1] = arr[i + 1], arr[i]

  1. 列表和元祖赋值【拆包多对一】

对于可迭代对象,如元组、列表、字符串、集合、字典这些可迭代对象都可以被拆包,拆包是指将一个结构中的数据拆分为多个单独变量中,拆包也是变量赋值的一种。

-`tuple1 = ('001', '张三',18,'man', '138383838438')
     id, name, age,sex, tel = tuple1
     print(id)  #001
     print(name) #张三
     print(age)   #18
     print(sex)   #man
     print(tel)    #138383838438`

       可变参数接受右侧多个赋值信息      
       id,*info=tuple1
       print(info)  # ['张三', 18, 'man', '138383838438']       

***参数:就是长度可变参数,它在赋值的时候会将变量的一个或者多个值赋值给自己。**

这个赋值的过程,其实也就是拆包的过程,将元素的信息由变量接收它。但是在拆包的过程中,必须将右侧的所有信息全部拆完。所以如果没有可变参数的话,左侧的参数个数一定要等于右侧列表/元组内元素个数。
这个可变参数是怎么确定接受参数的个数呢?
是根据前后固定变量接受的剩余参数来决定的。

拆包的本质
其实拆包的本质,就是利用python函数的参数列表,不定长参数,回想下python函数的参数列表是怎么声明的。

def __init__(self, *args, **kwargs):
   第一个参数 *args就是不定长参数,可以指定多个参数:列表、元祖、集合等。
   第二个参数**kwargs也是个不定长参数,只能指定字典类型的参数,可以是多个。

留给大家一个练习,怎样拆包字典