day16_总结

运算符重载

python中所有的数据类型都是类,数据都是对象

所有的运算符对应的操作,本质都是在调用数据类型对应的魔法方法
class A:
    def __init__(self, age):
        self.age = age

# 重载加法运算符
    def __add__(self, other):
        return

# 重载乘法运算符
    def __mul__(self, other):
        return
# 重载比较大小  (  < 和 > 两个只需要重载一个, 另外一个就自动有效)
    #   >
    def __gt__(self, other):
        return self.age > other.age
    #   <
    def __lt__(self, other):
        return self.age < other.age

1.一个变量直接给另外一个变量赋值:直接将地址赋值,赋完后,两个变量指向同一块内存区域,并且相互影响

2.浅拷贝和深拷贝

原理:将被拷贝的对象复制一份,产生一个新的数据,然后将新的数据的地址返回
a.浅拷贝
1)列表或字典的copy方法是浅拷贝、切片也是浅拷贝
2)copy.copy(对象) - 复制指定的对象,产生一个新的对象(不会复制子对象)
b.深拷贝
copy.deepcopy(对象)   - 复制指定的对象,产生一个新的对象。如果这个对象中有其他的对象,子对象也会被复制

内存管理

1.数据的存储(内存开辟)

python的变量都是在栈区间,对象在堆区间
声明变量或者给变量赋值,是先在内存(堆)中开辟存储数据,然后将数据地址保存在变量中。
但是数字和字符串特殊:如果用数字和字符串给变量赋值,不会直接开辟空间保存数据,而是先在内存中检查这个数据之前是否已经存储过,如果已经存储直接用上次保存的数据,没有存储才会开辟新的空间保存数据

2.内存的释放

原理:
1)引用计数
python中每个对象都有一个属性加引用计数,用来保存当前对象的引用的个数(保存对象地址的就是引用)
2)
python中的垃圾回收机制来判断一个对象是否销毁,就看这个对象的引用计数是否为零,如果过为零就会被销毁

套接字

  • 进行通信的两端就是套接字,有两种类型,分别是服务器套接字、客户端套接字##

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,1-1024是著名端口,一般不选,同一时间一个端口只能绑定一个服务

3.开始监听请求(安电池)

server.listen(1)

4.让服务器一直运行

5.接受请求(接电话)

  • 代码运行到这个位置,会停下来,等到有客户端给服务器发送请求为止

6.接收消息(听电话)

recv(bufsize)   - bufsize,设置一次性能够接收的数据大小的最大值,,单位是字节
                返回的数据类型是字节

7.发送消息

8关闭连接

你可能感兴趣的:(day16_总结)