python学习-进阶基本知识点总结

news2024/11/29 14:54:33

(一)正则表达式

1、正则表达式

字符类

  • [abc]:匹配 “a”、“b” 或 “c” 中的任意一个字符。
  • abc:除了 “a”、“b” 和 “c” 以外的任何字符。
  • [a-z]:匹配任何小写字母。
  • [A-Z]:匹配任何大写字母。
  • [0-9]:匹配任何数字。
  • [a-zA-Z0-9]:匹配任何字母或数字。

限定符和重复次数

  • ?:匹配前面的字符零次或一次。
  • *:匹配前面的字符零次或多次。
  • +:匹配前面的字符一次或多次。
  • {n}:匹配前面的字符恰好 n 次。
  • {n,}:匹配前面的字符至少 n 次。
  • {n,m}:匹配前面的字符 n 到 m 次。

特殊字符

  • \d:匹配任何数字字符,等价于 [0-9]。
  • \D:匹配任何非数字字符。
  • \s:匹配任何空白字符,
  • 包括空格、制表符和换行符。
  • \S:匹配任何非空白字符。
  • \w:匹配任何字母或数字字符,等价于 [a-zA-Z0-9]。
  • \W:匹配任何非词语字符。

分组和引用

  • (expr):匹配表达式并捕获匹配。可以在后续的表达式中使用 \g<id> 或 \g<name> 来引用这个捕获的匹配。
  • (?:expr):匹配表达式但不捕获匹配。 匹配位置 ^:匹配行的开头。 $:匹配行的结尾。 \b:匹配单词的边界。 \B:匹配非单词的边界。

2、re模块

查找

利用正则表达式查找,有三种方法

方法match()search()findall
特点从头匹配仅返回第一个匹配匹配所有字符串
返回类型ObjectObject列表
匹配为空时NoneNone空列表
匹配次数11所有
使用频率最不常使用较常用最常用

使用方法:

re.match(pattern, string, [flags])

re.search(pattern, string, [flags])

re.findall(pattern, string, [flags])

pattern:表示模式字符串,由要匹配的正则表达式转换而来

string:表示要匹配的字符串。,如

flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写,如

 

利用group()来获取被匹配的子字符串

print(match.group()) # 返回所有分组的匹配结果 ​ print(match.group(1)) # 返回第1个分组的匹配结果 ​ print(match.group(2)) # 返回第2个分组的匹配结果 ​

分割

re.split(pattern, string, [maxsplit], [flags])
pattern:匹配的正则表达式
string:要匹配的字符串。
maxsplit:可选参数,表示最大的拆分次数。
flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写

替换

re.sub(pattern, repl, string, count, flags)

pattern:正则表达式

repl:表示替换的字符串。

string:表示要被查找替换的原始字符串。

count:可选参数,表示模式匹配后替换的最大次数,默认值为0,表示替换所有的匹配

flags:可选参数,表示标志位,用于控制匹配方式

常见的正则表达式:

  1. 匹配手机号码:^1[3-9]\d{9}$ 这个正则表达式可以精确地匹配中国大陆的手机号码,包括以 13、14、15、16、17、18、19 开头的 11 位数字串。

  2. 匹配电子邮件地址:^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$ 这个正则表达式可以匹配标准的电子邮件地址格式,包括用户名和域名两个部分。其中,用户名部分可以包含大小写字母、数字、下划线和减号,域名部分则必须包含一个点号(例如 .com、.net、.edu)。

  3. 匹配身份证号码:^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}[0-9xX]$ 这个正则表达式可以匹配中国居民身份证号码,包括前六位地区代码、中间的年月日和最后一位的校验码。需要注意的是,该正则表达式不能验证身份证的真实性,只能验证格式是否正确。

  4. 匹配日期:^(19|20)\d{2}-(0[1-9]|1[012])-(0[1-9]|[12]\d|3[01])$ 这个正则表达式可以匹配标准的日期格式,包括年份、月份和日份,其中年份范围为 1900 到 2099 年。

  5. 匹配 IP 地址:^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$ 这个正则表达式可以匹配标准 IPv4 地址格式,包括四个点分隔的数字段,每个数字段的取值范围是 0 到 255。

(二) 函数

1、定义

def 函数名(参数):
    函数体
    
#调用:
函数名(参数)

2、参数

普通参数:实参

默认值参数:

def 函数名(...,形参名=值):
    函数体
    #形参名=值,要放在右边,位置必须与定义时一致
    
#查看当前默认参数值:
函数名.__defaults__

关键参数:调用函数时的参数传递方式与函数定义无关

可变长参数:

*parameter:存放元组

**parameter:多个关键字存放在字典中

3、作用域

局部变量:函数内部定义的变量

全局变量:在函数外定义,用global 定义全局变量

4、匿名函数(lambda表达式)

#定义:
result=lambda 参数=函数体
#调用:
result(参数)

 (三)面对对象

1、类的定义

class 类名:
    属性1=值1 #类属性
    def __init__(self,变量1,变量2....):#实例方法(构造方法)
        #self.变量1=变量1 #成员属性
        方法体
​
    def 方法名(参数1....):#普通方法
        方法体
​
#调用类
对象名=类名()
对象名=类名(成员1,成员2....)

在实例方法中,python会自动绑定方法的第一个参数(通常建议该参数命名为self)第一个参数只想总是指向调用该方法的对象,

案例:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
​
person = Person("Tom", 28)
print(person.name)    # 输出 "Tom"
print(person.age)     # 输出 "28"
​

增加类属性:

对象.属性名=值

person.address="广州"

print(person.address)#结果:广州

2、类中的权限

在python中权限分三种:

  • 保护protected:成员或方法前加上单下划线"_"
  • 私有private:成员或方法前加上双下划线"__"
  • 公共public:python默认的公共方法,什么都不加

此外注意:有一种特殊的方法定义:方法名前后都有双划线,例如实例方法__ _init__ _,这是系统定义的方法。

3、封装

封装指的是将数据和方法组合到一个单元中,并对外部隐藏这个单元的实现细节。

class Person:
   def __init__(self, name, age):
      self.name = name
      self.__age = age #私有属性
      
   def display(self):
      print("Name: ", self.name)
      print("Age: ", self.__age)
​
person = Person("Tom", 20)
person.display()

使用__来定义私有属性,这意味着该属性只能在类的内部访问,无法在类的外部访问。这样可以保证类的数据安全性和可维护性

4、继承

继承是面向对象编程中的另一个主要概念,它指的是一个类可以继承另一个类的属性和方法。被继承的类称为父类、超类或基类,而继承的类称为子类或派生类

class Person:
   def __init__(self, name, age):
      self.name = name
      self.__age = age #私有属性
      
   def display(self):
      print("Name: ", self.name)
      print("Age: ", self.__age)
​
person = Person("Tom", 20)
person.display()

创建了一个Animal类作为父类,又创建了一个Dog类作为子类,并使用super().__init__()方法来调用父类的构造函数进行初始化,使用super().display()方法来调用父类方法。

5、多态

多态指的是同一个方法或属性在不同的对象中表现出不同的行为。具体来说,多态体现在两个方面:方法重载和方法重写。方法重载指的是在同一个类中,根据传入的参数类型和数量的不同,实现具有不同行为的同名方法。方法重写指的是子类方法可以重写父类方法,从而实现不同的行为。

class Animal:
   def make_sound(self):
      print("Animal makes sound")
​
class Dog(Animal):
   def make_sound(self):
      print("Dog barks")
​
class Cat(Animal):
   def make_sound(self):
      print("Cat meows")
​
def animal_sound(animal):
   animal.make_sound()
​
animal_sound(Animal())
animal_sound(Dog())
animal_sound(Cat())

定义了一个基类Animal和两个子类DogCat,并定义了make_sound()方法。我们使用animal_sound()方法在不同的对象中传入animal参数调用make_sound()方法,从而实现了多态的效果。

(四)异常处理

    try:
        try块
    except 错误类型:
        except块

可能存在异常。符合异常类型就执行

    try:
        try块
    except 错误类型:
        except块
    else:
        else块
    

不存在所列异常,就执行else模块

 try:
        try块
    except 错误类型:
        except块
    finally:
        finally块

不管异常情况如何,必执行finally块

 (五)文件操作

1、基本文件操作

打开文件对象:open

使用:

对象名=open(‘文件’,打开方式)

打开方式:

常见属性:

  • closed:判断是否关闭
  • mode:返回打开模式
  • name:返回文件名称

关闭文件

  • flush():内容写入文件,但不关闭文件
  • close():内容写入文件,同时关闭文件,释放资源

读文件

  • read([size]):从文件中读取size字节,省略参数size表示一次性读取全部内容
  • readline():读取一行
  • readlines():读取一行的第一个字符

指针

  • seek(offset[,whence]):指针移动,offset:偏移量,whence(0:从头开始,1:从当前位置开始,2:从尾部开始)
  • tell():返回当前位置

删除

truncate([size]):删除当前指针位置到末尾内容,只留下前size字节,省略size表示:删除全部

写内容

  • write(s):把内容写入文件中
  • writeline(s)把列表s逐个写入文本文件

2、os模块

3、os.path模块

路径:

  • abspath(‘路径’):返回所给路径的绝对路径
  • dirname('路径):返回路径的目录部分

判断问价是否存在:

  • exits('文件')

时间

  • getatime(路径):最后访问时间
  • getctime(路径):文件创造时间
  • getmtime(路径):文件最后修改时间

文件大小:

  • getsize(文件名)

判断:

  • isiabs(路径):判断是否是绝对路径
  • isdir(路径):判断是否是目录
  • ifile(路径):判断是否是文件

连接:

  • join(路径1,路径2):将多个路径组合成一个路径,便于跨平台使用

分割:

  • split(路径):分割路径为目录和文件名两部分,返回一个元组
  • splitext(路径):分割路径为文件名和扩展名两部分,返回一个元组
  • splitdirive(路径):从路径分割驱动器

4、目录操作

os模块

os.path模块

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/606911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第6节:obj/fbx/shp等转3dtiles(免费转换工具+视频)

推介使用cesiumlab 进行转换(可免费转换,含转换结果预览),网上也看了很多转换工具,要么操作安装不方便,要么转换出来效果不理想。 1、下载cesiumlab工具 下载地址 2、启动cesiumlab,进行登录访问(网页版) 没有账号的可以用手机号注册一个 3、 选择通用模型切片 …

恒容容器放气的瞬时流量的计算与合金氢化物放氢流量曲线的计算

有时候&#xff0c;你会遇到一个问题&#xff0c;该问题的描述如下&#xff1a; 你有一个已知体积的容器&#xff0c;设容器体积为V&#xff0c;里面装有一定压力(初始压力)的气体&#xff0c;如空气或氢气等&#xff0c;设初始压力为1MPa&#xff0c;容器出口连接着一个阀门开…

数据库关系操作集合

文章目录 传统集合运算1:联合&#xff08;UNION&#xff09;2:差集&#xff08;EXCEPT 或 MINUS 或 LEFT JOIN&&IS NULL&#xff09;3:交集&#xff08;INTERSECT或INNER JOIN&#xff09;4:笛卡尔积&#xff08;JOIN&#xff09; 专门集合运算1:选择&#xff08;SELEC…

JVM那些事 (含经典面试题)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 前言: 1. JVM&#xff1a;Java 虚拟机&#x…

【MySQL高级篇笔记-性能分析工具的使用 (中) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、数据库服务器的优化步骤 二、查看系统性能参数 三、统计SQL的查询成本&#xff1a;last_query_cost 四、定位执行慢的 SQL&#xff1a;慢查询日志 1、开启慢查询日志参数 2、查看慢查询数目 3、慢查询日志分析工具&#xf…

k8s 配置service失败

服务暴露的端口不可用 查看容器的状态是否为Running。 进入容器&#xff0c;然后对容器进行curl。 curl 127.0.0.0:<需要查询的端口>如果是refuse或者其他返回&#xff0c;说明服务完全不可用。 注册service 能够进行外网访问的必须是NodePort类型。NodeIP是无法进…

Java 实现在顺序表指定位置插入一个元素

一、思路 1.定义一个pos变量来记录要插入的位置. 2.定义一个usedSize变量来记录元素个数. 3.定义一个data变量来记录要插入的元素值. 4.要保证pos位置合法&#xff0c;也就是不是负数&#xff0c;因为是要保证pos位置前是要有元素&#xff0c;因此也不能大于元素个数. 5.也需要…

【电子学会】2023年03月图形化二级 -- 电子画板

电子画板 1. 准备工作 (1)删除默认的小猫角色,保留默认白色背景; (2)从角色库添加Arrow1角色作为画笔; (3)绘制五个角色:颜色分别为红、黄、绿、蓝、紫的圆形; (4)将Arrow1角色的第一个造型修改为下图所示状态,箭头尖端在角色中心位置。 2. 功能实现 (1)点…

他山之石可以攻玉:解锁9个chatGPT常用姿势

ChatGPT是一个颠覆性的人工智能&#xff0c;可以用来实现众多目标。下面是我们用中文提出的关于这些任务的指令&#xff0c;以及来自ChatGPT的中文回答示例。 调试代码 提示&#xff1a;为什么我的python代码报错&#xff1a;x [2, 3, 8 9]&#xff1f; ChatGPT回答&#x…

chatgpt赋能python:Python反转输出的利用

Python反转输出的利用 在Python编程中&#xff0c;有时候需要对一些字符串或列表进行反转输出。这种操作非常实用&#xff0c;可以用于字符串或列表翻转、倒序等场景&#xff0c;可以帮助我们提高代码的效率。在本文中&#xff0c;我们将介绍Python反转输出的方法以及实用性。…

2023/06/03 软件PM入门学习(二)

视频参考地址&#xff1a; B站闫波软件项目管理视频学习. 视频资源&#xff1a;video P3 本篇重点&#xff1a;过程、CMMI 简书日更计划同步记录&#x1f3c3;… 杂 项目管理五要素 技术、方法、团队建设、信息、沟通 战略角度 人员&#xff08;people&#xff09;问题 &am…

用Python的turtle和matplotlib画出圆满和爱心

马上就要到六一儿童节了&#xff0c;小朋友很喜欢画画&#xff0c;这里就用Pyhton来画一些简单形状。 首先是圆形&#xff0c;圆形的寓意是圆满、完美、团圆、优胜和团结。圆形在形状上是一个平面中点到定点距离相等的图形&#xff0c;象征着圆满和完美&#xff0c;寓意着无所不…

chatgpt赋能python:用什么软件编写Python文件?

用什么软件编写Python文件&#xff1f; Python 是一种流行的编程语言&#xff0c;许多人使用它来编写软件应用程序、数据分析工具以及自动化脚本。但是对于初学者来说&#xff0c;可能会感到迷茫&#xff0c;不知道应该用什么软件来编写并运行Python文件。本文将介绍几种非常流…

实战Windows Chrome 0day

遇到挑战跟挫折的时侯&#xff0c;我有一个坚定的信念&#xff0c;我可以断气&#xff0c;但绝不能放弃 漏洞复现 实战Windows Chrome 0day需要满足的条件 第一点是关闭沙箱环境 第一种方式 设置Chrome浏览器的快捷方式 在快捷方式上增加 -no-sandbox 第二种方式 命令行命令…

Vue-CLI + Vue3 + Vue-Router4 实现tabbar小案例

Vue-CLI Vue3 Vue-Router4 实现tabbar小案例 tabbar导航栏案例&#xff1a;该案例实现了基础的组件封装&#xff0c;编程式路由&#xff0c;以及插槽的使用&#xff0c;对于我们日常组件化开发有着很大的启示作用&#xff0c;主要效果是点击下方的导航栏链接&#xff0c;上方…

【owt】addon.MediaStream,erizo::MediaStream 还有addon.MediaXXX,erizo::MediaXXX

9. MediaStream 和erizo::MediaStream 类的继承关系 erizo::MediaStream source/agent/webrtc/rtcConn/erizo/src/erizo/MediaStream.h source/agent/webrtc/rtcConn/erizo/src/erizo/MediaDefinitions.h erizo::MediaSource source/agent/webrtc/rtcConn/erizo/src/erizo/…

皮卡丘RCE

1.RCE漏洞描述 RCE漏洞&#xff0c;可以让攻击者直接向后台服务器远程注入操作系统命令或者代码&#xff0c;从而控制后台系统。 远程系统命令执行 一般出现这种漏洞&#xff0c;是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。比如我们常见的路由器、防火墙…

XSS笔记(简单了解的)

1.什么是XSS&#xff1f; XSS (Cross Site Scripting)&#xff0c;即跨站脚本攻击&#xff0c;是一种常见于 Web 应用中的计算机安全漏洞。恶意攻击者往 Web 页面里嵌入恶意的客户端脚本&#xff0c;当用户浏览此网页时&#xff0c;脚本就会在用户的浏览器上执行&#xff0c;进…

chatgpt赋能python:Python可以有多个同名函数吗?

Python 可以有多个同名函数吗&#xff1f; Python作为一门高级编程语言&#xff0c;其灵活性和易用性备受开发人员的青睐。在Python中&#xff0c;函数是编程语言的核心&#xff0c;任何有经验的Python工程师都会知道Python的函数允许使用相同的名称来进行定义。那么问题来了&…