深拷贝、浅拷贝具体看:https://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html
b=a[:] 属于浅拷贝
参考:
当创建一个对象,并将它赋值给一个变量时,这个变量只是这个对象的一个参考,而不是这个变量本身。即变量名指向内存中这个对象的地址。可哈希对象原则上是没有深、浅拷贝一说的,只有参考。
a=[1,2,3]#a为参考
b=a#b也为[1,2,3]的参考
c=a[:]#c为新对象a[:]的参考 a[:]为[1,2,3]的浅拷贝,若其中3为一个可变对象d,则c[2]与a[2]指向同一个内存,即d所指向的内存
#非可哈希对象也一样
a=[5]
b=(1,2,a)#非可哈希对象
c=[1,2,a]#非可哈希对象
a[0]=3
b
Out[17]: (1, 2, [3])
c
Out[18]: [1, 2, [3]]
#可哈希对象
a=(1,2,3)
函数也是 对象,也一样:
def hi(name="yasoob"):
return "hi " + name
print(hi())
# output: 'hi yasoob'
# 我们甚至可以将一个函数赋值给一个变量,比如
greet = hi
# 我们这里没有在使用小括号,因为我们并不是在调用hi函数
# 而是在将它放在greet变量里头。我们尝试运行下这个
print(greet())
# output: 'hi yasoob'
# 如果我们删掉旧的hi函数,看看会发生什么!
del hi
print(hi())
#outputs: NameError
print(greet())
#outputs: 'hi yasoob'