May 7th_day16_operator&memory&socket

python中所有的数据类型都是,数据都是对象。
所有的运算符对应的操作,本质都是在调用数据类型对应的魔法方法。(每个运算符都对应一个固定的魔法方法)

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

2.浅拷贝和深拷贝

浅拷贝原理:将被拷贝的对象复制一份,产生一个新的数据,然后将新的数据的地址返回

2.1.浅拷贝

列表或字典的copy方法是浅拷贝、切片也是浅拷贝
copy.copy(对象) - 复制指定的对象,产生一个新的对象

2.2.深拷贝

copy.deepcopy(对象) - 复制指定的对象,产生一个新的对象。如果这个对象中有其他的对象,子对象也会被复制

运算符重载

1.运算符重载

通过在类中实现运算符对应的魔法方法,来让类的对象支持相关运算符的操作
每个运算符对应固定的魔法方法
x + y :前面的对象决定使用运算符的类

补充:重载
函数的重载 - 函数名相同但是参数不同的函数可以有多个,但是python不支持函数的重载

"""python不支持函数的重载"""
def func1():
    print('函数1')

def func1(x)
    print('函数2', x)

func1()
func1('abc')

memory

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

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

2.内存的释放

2.1.引用计数

python每个对象都有一个属性叫引用计数,用来保存当前对象的引用的个数

2.2.

python中的垃圾回收机制来判断一个对象是否销毁,就看这个对象的引用计数是否为零,如果为零就会被销毁

socket(套接字)

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

1.创建套接字对象(买个电话机)

family - 设置ip协议类型,AF_INET(ipv4),AF_INET6(ipv6)
type - 设置传输协议类型,SOCK_STREAM(TCP),SOCK_DGRAM(UDP)

server = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)

2.绑定ip地址和端口(插电话线绑定电话号码)

bind((ip地址,端口))
ip地址 - 字符串,服务器对应的ip地址
端口号 - int,端口号用来区分一台电脑上的不同的服务。0-65535,0-1024是著名端口,一般不选。
同一时间一个端口只能绑定一个服务

server.bind(('10.7.185.70', 8888))

3.开始监听请求(等别人打电话)

server.listen(512)

4.让服务器一直运行

while True:
    print('开始接收请求。。。')

5.接收请求(接电话)

    # 接收请求(接电话)
    # 代码运行到这个位置,会停下来,等到有客户端给服务器发送请求为止
    connect, address = server.accept()

6.接收消息(听别人说)

"""
    recv(bufsize)   -   bufsize,设置一次性能够接收的数据大小的最大值,单位是字节
                        返回的数据类型是字节
    """
    re_data = connect.recv(1024)
    print(str(re_data))

7.发送数据(说给别人听)

connect.send('你好!'.encode())

8.关闭连接(挂电话)

你可能感兴趣的:(May 7th_day16_operator&memory&socket)