Python特性?好在哪呢?
- Python可以边运行边解释,不需要先编译
- 不需要申明变量类型 x=1,x=abc不会错
- Python允许定义类和继承,没有访问修饰符(public、private)
- Python易上手,开发速度快。
赋值、浅拷贝、深拷贝
- 对象赋值:实际上是简单的对象引用,当你创建一个对象,然后把赋值给另一个变量的时候,Python并没有拷贝这个对象,而是拷贝了这个对象的引用
- 浅拷贝:
使用copy.copy(),它虽然复制了对象,但对于对象中的元素,依然使用原始的引用。
比如
a=[1,[2,3,4]]
b=a.copy()
a[1]=append(5)
a[1]和b[1]指向同一块内存地址,所以a[1]改变,b[1]也变。 - 深拷贝:
使用copy.deepcopy(),它会复制一个容器对象,以及里面的所有元素。
指向内存地址不同,a[1]改变,b[1]不变。
==和is的区别
= =检查两个对象的内容是否相等,相当于对象的内部_eq_()
is 判断对象标志符是否一致 x is y 相当于id(x) ==id(y)
__new__和__init__的区别
- __init__为初始化方法,__new__方法才是真正的构造函数
- __new__至少要有一个参数cls,代表要实例化的类;new__有一个参数self,就是这个_new_返回的实例,先运行__new__然后才运行__init
- __init__在__new__的基础上可以完成一些其他初始化的动作。
- __new__必须要有返回值;__init__不需要返回值。
参考于:公众号,菜鸟学Python