变量的赋值与修改

# 在我们修改变量的时候,我们是在修改什么
num1=123
num2=num1 # num1的值赋值给了num2
num1+=333 # num1的值+333
print('num1=',num1)
print('num2=',num2)
# 变量空间的分配、变量名的指向
"""
不可变类型对象和可变类型对象。
数字numbers、字符串string、元组tuples等是不可变类型对象
列表list、字典dict、集合set等是可变类型对象

"""
"""
不可变类型对象就是一旦生成,就不可更改的对象,
而可变类型对象是生成之后可以进行增删改等修改操作的对象
对于不可变类型对象的修改操作实际上是创建了一个新的对象,
然后将变量名(即标签)贴在新的对象上,这样我们就以为是修改了该变量了。
对于可变类型对象的修改操作就是对原对象的修改。
"""
print('\n')
list1=['A','B','C']
list2=list1
list1.append('D')
print('list1=',list1)
print('list2=',list2) # 这里的list2等于list1


# 创建两个完全一样的可变类型对象

import copy
mylist1=[[1,2,3],2,3]
mylist2=mylist1                    #标签赋值
mylist3=mylist1[:]         # 只拷贝的父对象,而不会拷贝里面的子对象,子对象仍然是原来对象的子对象
#切片赋值,或者称之为浅拷贝,相当于mylist3=copy.copy(mylist1)
mylist4=copy.deepcopy(mylist1) #深度拷贝赋值
# 对父对象进行了拷贝,也对子对象进行了拷贝。是一个全新的对象了

mylist1[1]= 10
mylist1[0][1]=11 #浅拷贝的话只对嵌套列表有影响么,也许吧
print('mylist1=',mylist1)
print('mylist2=',mylist2)
print('mylist3=',mylist3)
print('mylist4=',mylist4)

posted @ 2021-07-29 20:12  索匣  阅读(290)  评论(0编辑  收藏  举报