赋值是将一个对象的地址赋值给一个变量,往往可以通过直接赋值、引用赋值、拷贝值来实现。
赋值的变量=值 ,赋值的变量一定在等号左边
- 一、赋值
- 直接赋值:等号左右两边分别是变量和值
a=4
- 平行赋值:等号左右两边的变量和值可以是多个,但是要保证数量一致。
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]
- 列表和元祖赋值【拆包多对一】
对于可迭代对象,如元组、列表、字符串、集合、字典这些可迭代对象都可以被拆包,拆包是指将一个结构中的数据拆分为多个单独变量中,拆包也是变量赋值的一种。
-`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也是个不定长参数,只能指定字典类型的参数,可以是多个。
留给大家一个练习,怎样拆包字典