赞
踩
python中,主要有三种拷贝方式:直接赋值,浅拷贝(copy.copy)和深拷贝(copy.deepcopy).
具体地说,直接赋值就是二者保持一致,如下代码所示,当a中的元素发生变化时,b与a保持一致。
额外补充一点,如果对a进行重新赋值后,b与a不再保持一致。
a = [1,2,3]
b = a
a.append(4)
print(b)
#当a的类型发生变化或者重新赋值后,b与a不再保持一致
a = [5,6,7]
print(b)
浅拷贝不拷贝子对象,即子对象一致。
#在list a中还存在一个子list
>>>a = [1,2,3, [4,5], 4]
>>>b = copy.copy(a)
>>>a.append(5)
>>> a
[1, 2, 3, [4, 5], 4, 5]
>>> b
[1, 2, 3, [4, 5], 4]
#子对象保持一致
>>>a[3].append(6)
>>> a
>>> b
[1, 2, 3, [4, 5, 6], 4]
深拷贝就是完全不一致。
可变:list, dict, set
不可变:tuple, 数字和字符串
整型,浮点数和复数(这个不常用)
复数不常用,特别容易忽视。
复数的表达方式是 real + imagej。real是实部,image是虚部,二者可以用整数或浮点数来表示,j可以大写也可以小写。
被装饰的函数的名字会被当作参数传递给装饰函数。装饰函数执行它自己内部的代码后,会将它的返回值赋值给被装饰的函数
具体可以参考python的装饰器(函数装饰器),解释得非常到位。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。