python 语言基础


数据类型

python中主要有6种标准数据类型,分为可变和不可变两类。
不可变类型:该数据类型对象所指定内存中的值不可以被改变。
(1)、在改变某个对象的值时,由于其内存中的值不可以被改变,所以,会把原来的值复制一份再进行改变,这样就会计算机会开辟一段新的内存空间来存储新的值。

可变类型:该数据类型的对象所指定的地址上面的值可以被改变。
(1)、变量被改变后,其所指向的内存地址上面的值,直接被改变,没有发生复制行为,也没有发生开辟新的内存地址行为,不会重新开辟空间。

深拷贝,浅拷贝和赋值的区别

首先,需要明确一点,浅拷贝和深拷贝之间的区别只适用于容器对象(包含其他对象的对象,如列表或类实例)。对于非容器对象没有区别,都是对象拷贝,相当于重新赋值,生成一个新的对象。

敲重点,面试时,下边三句回答即可!

简单的来说,在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存。
深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存。
应用copy.copy浅拷贝、copy.deepcopy深拷贝功能的时候,会根据当前拷贝的数据类型,可变类型和不可变类型有不同的处理方式。
(1)、对于不可变对象(数字、字符串、元祖),浅拷贝和深拷贝是没有区别的。
(2)、对于可变对象(列表、字典、集合),浅拷贝第一次层引用,而深拷贝是完全拷贝。

赋值—对象赋值实际上是简单的对象引用
比较简单,赋值就是对物体进行贴标签操作,作用于同一物体。

赋值:值不变,地址不变;
copy浅拷贝和deepcopy深拷贝:值相等,地址不相等;

摘自原文链接


self的含义

摘自原文链接

self是类的实例,而非类

class Test:
    def prt(self):
        print(self)
        print(self.__class__)
 
t = Test()
t.prt()

执行结果如下

<__main__.Test object at 0x000000000284E080>
<class '__main__.Test'>

从上面的例子中可以很明显的看出,self代表的是类的实例。而self.__class__则指向类。

总结
self在定义时需要定义,但是在调用时会自动传入。
self的名字并不是规定死的,但是最好还是按照约定是用self
self总是指调用时的类的实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值