python 高级编程①

1 ‘==’ 与‘is ’的使用

python 高级编程①_第1张图片

① ‘==’判断两个对象内容是否相等

‘is’判断两个对象的地址是否相等


python 高级编程①_第2张图片

②在python中,有一个小整数常量池,在[-5, 257)中,里面的整数相当于都是初始化好的,不同的变量使用里面相同的整数,地址是相同的。



python 高级编程①_第3张图片

当超出[-5, 257)范围,每次使用整数需要重新创建,地址也就不相同。



python 高级编程①_第4张图片

③在python中有一个字符串常量池,每次创建的新的字符串都会存入这个常量池,当下次再使用相同的字符串只需要从常量池中调用,因此相同字符串的地址相同(不包括特殊情况)

python 高级编程①_第5张图片

创建列表和元组时,每次都开辟新空间,所以即使内容相等,地址也不相等


 2.深拷贝与浅拷贝

①  copy 模块:

    copy.deepcopy  深拷贝

     copy.copy 当拷贝的对象是列表(深),对里面的对象(浅)

      当拷贝的对象是元组(浅),对于里面的对象(浅)

②  

a=b

浅拷贝

③测试

测试一

python 高级编程①_第6张图片
text.01 当使用‘=’时为浅拷贝
text.01 当使用‘=’时为浅拷贝

测试二

deepcopy 深拷贝

python 高级编程①_第7张图片
text。02深拷贝


python 高级编程①_第8张图片

测试三

copy列表

python 高级编程①_第9张图片
python 高级编程①_第10张图片

测试四

copy 元组


python 高级编程①_第11张图片
python 高级编程①_第12张图片

3.其他拷贝方式

①分片表达式可以赋值一个序列

a='123'

b=split[:]

②字典的copy方法可以拷贝一个字典

d = dict(name="zhangsan", age=27)

co = d.copy()

③·有些内置函数可以生成拷贝(list)

a = list(range(10))

b = list(a)

4.属性 property

私有属性添加setter和getter的方法

①方法一

使用 set 和 get 函数,在类里面通过函数修改私有属性

python 高级编程①_第13张图片
python 高级编程①_第14张图片

②方法二

为了简化方法一

创建一个类属性 (假设名字为money),令属性等于property(set,get)

调用时 直接用 对象名.money即可直接使用set和get里面的内容


python 高级编程①_第15张图片

③方法三

此方法与方法二使用时一样的

@注解,get,set方法名字保持一致xx,在当时的get方法头部加 @property,在原来的set方法头部加@xx.setter


python 高级编程①_第16张图片

你可能感兴趣的:(python 高级编程①)