二、拆包
1、组包与拆包
组包,将多个数据值,组成元组,给到一个变量
a = 1, 2, 3
print(a) # (1, 2, 3)
def func():
return 1, 2 # 组包
拆包:将容器的数据分别给到多个变量,需要注意:数据的个数和变量的个数要保持一致
b, c, d = a # 拆包 把a的值分别给了b,c,d
print(b,c,d)
e,f = func()
print(e,f) # 1 2
my_list = [10,20]
a,b = my_list
print(a, b) # 10 20
my_dict = {'name': 'isaac', 'age': 18}
a, b = my_dict # key值
print(a, b) # name age
2、应用
可以在冒泡排序中使用!
直接交换两数的值,不需要第三个临时变量来辅助,本质上是拆包
a = 10
b = 20
方法一:
c = a
a = b
b = c
print(a, b)
方法二: +/- */÷
a = a + b # a 30
b = a - b # 10
a = a - b # 20
'''后面的两次虽然书写上是一样的,但是意义不同'''
print(a, b)
方法三, python中的使用 组包和拆包
a, b = b, a
print(a, b)
三、引用
1、变量的引用
本质上就是地址,
Python意思是数字都有地址,而变量是将自己的地址指向了数字(即将数字的地址保存在变量中)
将数据10 存储到变量a 中, 本质是将数据10 所在内存的引用地址保存到变量a 中
a = 10
将变量a中保存的引用地址给给到b
b = a
print(a, b) # 使用print函数打印变量a 和 b 引用中存储的值
print(id(a), id(b))
a = 20
print(a, b)
print(id(a), id(b))
2、列表的引用
my_list = [1, 2, 3] # 将列表的引用地址保存到变量my_list 中
my_list1 = my_list # 将my_list 变量中存储的引用地址给到 my_list1
print(my_list, id(my_list))
print(my_list1, id(my_list1))
my_list.append(4) # 向列表中添加数据4, 将数据4 的引用保存到列表中
print(my_list, id(my_list))
print(my_list1, id(my_list1))
my_list[2] = 5
print(my_list, id(my_list))
print(my_list1, id(my_list1))
'''
列表的地址引用没有发生变化,属于可变类型(可以添加数据)
'''
3、类型的可变与不可变