python中所有的数据类型都是类,数据都是对象
所有的运算符对应的操作,本质都是在调用数据类型对应的魔法方法。 每个运算符都对应一个魔法方法
1.一个变量直接给另一个变量赋值:直接将地址赋值,赋完后两个变量指向同一块内存区域
2.浅拷贝和深拷贝
拷贝原理:将被拷贝的对象复制一份,产生一个新的数据,然后将新的数据的地址返回。
a.浅拷贝
1)列表或字典的copy方法是浅拷贝、切片也是浅拷贝
2)copy.copy(对象) - 复制指定的对象,产生一个新的的对象。不会复制子对象
b.深拷贝
copy.deepcopy(对象) - 复制指定的对象,产生一个新的对象,如果这个对象中有其他的对象,子对象也会被复制
1.数据的存储(内存开辟)
python的变量都存储在栈区间,对象在堆区间
声明变量或者给变量赋值,先在内存(堆)中开辟存储数据,然后将数据地址保存在变量中。
注意:数字和字符串,如果是用数字或字符串赋值,不会直接开辟空间保存数据,
而是先在内存检测这个数据之前是否已经存储过如果已经存储直接用上次保存数据,
没有存储才会开辟新的空间保存数据
2.内存的释放
)
引用计数
python中每个对象都有一个属性叫引用计数,用来保存当前对象引用的个数
python中垃圾回收机制来判断一个对象是否销毁,就看这个对象的引用计数是否为0,
如果为0就会被销毁;反之不销毁
进行通信通信的两端就是套接字;有两种类型,分别是服务器套接字、客户端套接字
1.创建套接字对象(买个电话机)
family - 设置ip协议类型, AF_INET(ipv4), AF_INET6(ipv6)
type - 设置传输协议类型, SOCK_STREAM(TCP), SOCK_DGRAM(UDP)
2.绑定ip地址和端口(插电话线绑定电话号码)
bind((ip地址, 端口))
ip地址 - 字符串,服务器对应的ip地址
端口号 - int, 端口号用来区分一台电脑上的不同的服务。0-65535, 0-1024是著名端口,一般不选。
同一时间一个端口只能绑定一个服务
3.开始监听请求(按电池,等别人打电话)
4.让服务器一直运行
5.接收请求(接电话)
代码运行到这个位置,会停下来,等到有客户端给服务器发送请求为止。。。
6.接收数据(听别人说)
recv(bufsize) - bufsize,设置一次性能够接收的数据大小的最大值,单位是字节
返回的数据类型是字节
7.发送数据 (说给别人听)
8.关闭连接(挂电话)
1.创建套接字对象
2.连接服务器
3.发送消息
4.接收消息