当前位置: 首页 > news >正文

Python高阶

1. 闭包

定义:双层嵌套函数, 内层函数可以访问外层函数的变量 将内存函数作为外层函数的返回,此内层函数就是闭包函数

通过闭包:

优点:

  • 不定义全局变量,也可以让函数持续访问和修改一个外部变量
  • 闭包函数引用的外部变量,是外层函数的内部变量。作用域封闭难以被误操作修改

缺点:额外的内存占用

 nonlocal关键字的作用:

  • 在闭包函数(内部函数中)想要修改外部函数的变量值
  • 需要用nonlocal声明这个外部变量

2. 装饰器

装饰器就是使用创建一个闭包函数,在闭包函数内调用目标函数。 可以达到不改动目标函数的同时,增加额外的功能。

@outer定义在目标函数上

func是被装饰的 函数

3. 设计模式

设计模式就是一种编程套路。 使用特定的套路得到特定的效果

单例模式

单例模式就是对一个类,只获取其唯一的类实例对象,持续复用它。

适用场景:当一个类只能有一个实例,而客户可以从一个众所周知的访问点访问它时。

优点:节省内存 节省创建对象的开销

工厂模式

工厂模式:将对象的创建由使用原生类本身创建 转换到由特定的工厂方法来创建

使用场景:当需要大量创建一个类的实例的时候, 可以使用工厂模式。

优点:

4. 多线程

进程线程合并执行

进程: 就是一个程序,运行在系统之上,那么便称之这个程序为一个运行进程,并分配进程ID方便系统管理。

线程:线程是归属于进程的,一个进程可以开启多个线程,执行不同的工作,是进程的实际工作最小单位。

操作系统中可以运行多个进程,即多任务运行

一个进程内可以运行多个线程,即多线程运行

并行执行:多个进程同时在运行,即不同的程序同时运行,称之为:多任务并行执行 一个进程内的多个线程同时在运行,称之为:多线程并行执行

多线程编程

 threading模块的使用

  • thread_obj = threading.Thread(target=func)  创建线程对象
  • thread_obj.start() 启动线程执行

eg:

需要传参的话可以通过:

  • args参数通过元组(按参数顺序)的方式传参
  • 或使用kwargs参数用字典的形式传参

5. 网络编程

服务器开发

socket: (简称 套接字) 是进程之间通信一个工具,进程之间想要进行网络通信需要socket。 Socket负责进程之间的网络数据传输。

2个进程之间通过Socket进行相互通讯,就必须有服务端和客户端

  • Socket服务端:等待其它进程的连接、可接受发来的消息、可以回复消息
  • Socket客户端:主动连接服务端、可以发送消息、可以接收回复

Socket服务端编程:

主要分为如下几个步骤:

1. 创建socket对象

2. 绑定socket_server到指定IP和地址

3.  服务端开始监听端口

4.  接收客户端连接,获得连接对象

5. 客户端连接后,通过recv方法,接收客户端发送的消息

6. 通过conn(客户端当次连接对象),调用send方法可以回复消息

7. conn(客户端当次连接对象)和socket_server对象调用close方法,关闭连接

实现服务端并结合客户端进行测试:

客户端开发

Socket客户端编程

主要分为如下几个步骤:

1. 创建socket对象

2. 连接到服务端

3. 发送消息

4. 接收返回消息

5. 关闭链接

6. 正则表达式

正则表达式,又称规则表达式(Regular Expression),是使用单个字符串来描述、匹配某个句法规则的字符串,常被用来检索、替换那些符合某个模式(规则)的文本。

Python正则表达式,使用re模块,并基于re模块中三个基础方法来做正则匹配。 分别是:match、search、findall 三个基础方法。

基础匹配

  • re.match,从头开始匹配,匹配第一个命中项
  • re.search,全局匹配,匹配第一个命中项
  • re.findall,全局匹配,匹配全部命中项
re.match(匹配规则, 被匹配字符串)

从被匹配字符串开头进行匹配, 匹配成功返回匹配对象(包含匹配的信息),匹配不成功返回空。

search(匹配规则, 被匹配字符串)

搜索整个字符串,找出匹配的。从前向后,找到第一个后,就停止,不会继续向后

整个字符串都找不到,返回None

findall(匹配规则, 被匹配字符串)

匹配整个字符串,找出全部匹配项

找不到返回空list: []

元字符匹配

单字符匹配

示例:

字符串 s = “itheima1 @@python2 !!666 ##itcast3”

  • 找出全部数字: re.findall(r‘\d’, s)

字符串的r标记,表示当前字符串是原始字符串,即内部的转义字符无效而是普通字符

  • 找出特殊字符:

re.findall(r‘\W’, s)

  • 找出全部英文字母:

re.findall(r’[a-zA-Z]’, s)

[]内可以写:[a-zA-Z0-9] 这三种范围组合或指定单个字符如[aceDFG135]

数量匹配

边界匹配:

分组匹配:

7. 递归

递归: 即方法(函数)自己调用自己的一种特殊编程写法,即(函数调用自己,即称之为递归调用。

注意:

  • 注意退出的条件,否则容易变成无限递归
  • 注意返回值的传递,确保从最内层,层层传递到最外层

os模块的3个方法

  • os.listdir,列出指定目录下的内容
  • os.path.isdir,判断给定路径是否是文件夹,是返回True,否返回False
  • os.path.exists,判断给定路径是否存在,存在返回True,否则返回False
http://www.dtcms.com/a/324772.html

相关文章:

  • 企业架构之导论(1)
  • 2025华数杯比赛还未完全结束!数模论文可以发表期刊会议
  • C# 异步编程(并行循环)
  • 内存溢出的原因有哪些,如何排查线上问题?
  • 【Spring Boot刷新上下文核心流程详解】
  • UNIVERSAL IMAGE RESTORATION PRE-TRAINING VIA DEGRADATION CLASSIFICATION
  • 【Python 工具人快餐 · 第 5 份】
  • 1. 电阻选型
  • 云服务器最新版MySQL 安装步骤
  • jdk17下载安装教程【超详细图文】
  • 零基础学习jQuery第二天
  • 在windows安装colmap并在cmd调用
  • json-fortran库的使用
  • TS 编译原理,提供的 API
  • Angular初学者入门第二课——.ts、.d.ts、.state.ts的区别(精品)
  • Perplexity 为特朗普 Truth Social 提供技术支持
  • 深入解析微服务分布式事务的原理与优化实践
  • 极移(Polar Motion):概念、原因、影响及坐标转换计算
  • 下载UOS桌面专业版系统镜像
  • 计算机视觉(CV)——图像相关基本概念
  • 【redis初阶】------redis客户端(1)
  • Node.js面试题及详细答案120题(01-15) -- 基础概念篇
  • Leaflet地图高亮与编辑功能实现
  • 【最后203篇系列】031 构建MCP尝试
  • signed 和 unsigned 类型说明符
  • 嵌套-列表存储字典,字典存储列表,字典存储字典
  • Linux 路由子系统深度分析:框架、实现与代码路径
  • web刷题3
  • 商业解决方案技术栈总结
  • Python 获取对象信息的所有方法