随笔分类 - python高级
多任务编程、网络变成、高级语法、正则表达式等
摘要:说明 正则表达式(Regular Expression,简称为 regex 或 regexp)是一种用于描述、匹配和操作字符串模式的工具。它是一种强大的文本处理工具,用于在字符串中查找、替换、分割和验证特定模式的文本。 正则表达式由一系列字符和特殊字符组成,用于构建一个模式,该模式描述了你想要匹配的
阅读全文
摘要:普通赋值 1 # 1 普通赋值 2 a = [1, 2, 3] 3 b = [11, 22, 33] 4 c = [a, b] 5 6 d = c 7 8 print(id(d)) # 2517490235456 9 print(id(c)) # 2517490235456 10 print(f"c
阅读全文
摘要:概念 Python生成器是一种特殊的函数,它可以在需要时生成一个序列的值。与普通函数不同,生成器函数使用yield语句或生成器表达式(也叫生成器推导式)来产生值,并且可以暂停和恢复执行。生成器可以逐个生成值,而不是一次性生成整个序列,这样可以节省内存并提高性能。 一般与循环语句(for、while)
阅读全文
摘要:说明 with语句是Python中一种用于管理资源的机制,它与上下文管理器紧密相关。 上下文管理器是一个对象(因此自定义时需要创建一个类),它定义了在进入和退出特定代码块(称为上下文)时要执行的操作。 使用with语句和上下文管理器可以确保资源的正确分配和释放,以及在使用完资源后进行清理工作,从而提
阅读全文
摘要:说明 在 Python 中,property 属性是一种特殊的属性,它允许你在访问和设置对象的属性时执行自定义的操作。property 属性用于将方法转化为属性,从而在外部代码中可以像访问普通属性一样访问这些方法。它是一种实现封装和控制属性访问的强大工具。 property 属性的主要目的是提供一种
阅读全文
摘要:1. 装饰器语法糖示例 注解形式: # 1定义一个装饰器(装饰器的本质是闭包) def check(fn): def inner(): print("请先登陆") fn() return inner # 2使用装饰器装饰函数(增加一个登陆功能) # 解释器遇到@check 会立即执行 comment
阅读全文
摘要:定义 给已有函数增加额外功能的函数。其本质上就是一个闭包函数。 特点 1. 不修改已有函数的源代码(无风险) 2. 不修改已有函数的调用方式(无风险) 3. 给已有函数增加额外的功能(只需要关注额外增加的部分) 语法 1. 定义一个装饰器 2. 在目标函数上使用装饰器 通过@装饰器名称 放在定义目标
阅读全文
摘要:弱引用(Weak Reference)是编程语言中的一个概念,用于在某些情况下防止循环引用并避免内存泄漏。它在内存管理和垃圾回收的背景下发挥作用。 循环引用:循环引用指的是对象之间形成了一个循环的引用链,导致这些对象都无法被垃圾回收,即使它们已经不再被程序所使用。这可能会导致内存泄漏,因为这些无法回
阅读全文
摘要:通过使用闭包,我们可以实现许多有用的功能,提高代码的灵活性和可维护性。然而,在使用闭包时需要注意避免循环引用、内存泄漏等问题。 循环引用 循环引用指的是闭包函数中捕获的变量与闭包函数本身形成了一个循环引用关系。 当闭包函数捕获了外部函数的变量,并且这个变量又引用了闭包函数本身时,就会出现循环引用的情
阅读全文
摘要:主要的作用和用途: 保存状态:闭包可以用于保存函数的局部变量状态,这样在每次调用函数时,闭包内的变量都会被保留下来。这使得闭包非常适合用于实现计数器、缓存等功能。 延迟执行:通过使用闭包,我们可以将某个操作延迟到稍后执行。例如,可以创建一个延迟调用的函数,该函数接受一些参数,并在稍后的时间执行特定的
阅读全文
摘要:nonlocal关键字在闭包中的作用 在Python中,默认情况下,内层函数只能访问外层函数的变量,但不能修改它们。如果希望在闭包函数中修改外层函数中的变量,可以使用nonlocal关键字来声明要修改的变量。 示例 1 # 外部函数 2 def func_out(num1): 3 # 内部函数 4
阅读全文
摘要:函数参数 Python中一切皆引用:变量名(包括类名和函数名等)存放的都是内存空间(地址),所以都可以作为参数传递 函数名的作用 ① 函数名存放的是函数所在空间的地址 ② 函数名()执行函数名所存放空间地址中的代码 ③ func01 = func02函数名可以像普通变量一样赋值,func01() 等
阅读全文
摘要:步骤 1. 获取执⾏python程序的终端命令⾏参数 2. 判断参数的类型,设置端⼝号必须是整型 3. 给Web服务器类的初始化⽅法添加⼀个端⼝号参数,⽤于绑定端⼝号 示例 import socket import threading import sys # 获取用户请求资源的路径 # 根据请求资
阅读全文
摘要:步骤 1. 把提供服务的Web服务器抽象成⼀个类(HTTPWebServer) 2. 提供Web服务器的初始化⽅法,在初始化⽅法⾥⾯创建socket对象 3. 提供⼀个启动Web服务器的⽅法,让Web服务器处理客户端请求操 作。 示例 1 import socket 2 import threadi
阅读全文
摘要:静态Web服务器的问题 目前的Web服务器,不能支持多用户同时访问,只能一个一个的处理客户端的请求,那么如何开发多任务版的web服务器同时处理多个客户端的请求?可以使用多线程,比进程更加节省内存资源。 多任务版web服务器程序的实现步骤 1. 当客户端和服务端建⽴连接成功,创建⼦线程,使⽤⼦线程专⻔
阅读全文
摘要:实现步骤 1. 获取用户请求资源的路径 2. 根据请求资源的路径,读取指定文件的数据 3. 组装指定文件数据的响应报文,发送给浏览器 4. 判断请求的文件在服务端不存在,组装404状态的响应报文,发送给浏览器 示例 import socket # 获取用户请求资源的路径 # 根据请求资源的路径,读取
阅读全文
摘要:开发自己的静态Web服务器的步骤 1. 编写一个TCP服务端程序 2. 获取浏览器发送的http请求报文数据 3. 读取固定页面的数据,把页面数据组装成HTTP响应报文数据发送给浏览器。 4. HTTP响应报文数据发送完成以后,关闭服务与客户端的套接字 静态Web服务器-返回固定页面数据的示例代码
阅读全文
摘要:说明 Python自带的静态Web服务器可以通过使用http.server模块来实现。 步骤 打开命令行终端,进入要作为静态文件根目录的文件夹。 运行以下命令启动静态Web服务器: Python 2.x版本:python -m SimpleHTTPServer <port> Python 3.x版本
阅读全文
摘要:TTP响应报文是在HTTP协议中,服务器向客户端发送响应时所使用的数据格式。它包含了响应状态行、响应头部、空行和响应体4个部分。 响应状态行:响应状态行由协议版本、状态码和状态描述组成,用于描述服务器对请求的处理结果。 协议版本:指示服务器使用的HTTP协议版本,如HTTP/1.1。 状态码:标识了
阅读全文
摘要:什么是http请求报文? 请求报文是在HTTP协议中,客户端向服务器发送请求时所使用的数据格式。它包含了请求行、请求头部、空行、请求体4个部分。其中请全体可以没有。 请求行:请求行由请求方法、URI和协议版本组成,用于描述请求要求的操作和资源位置。 请求方法:指示对资源执行的操作类型,如GET、PO
阅读全文

浙公网安备 33010602011771号