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

今天我们学习python编程常用模块与面向对象

一.re模块


1.正则表达式

正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。

2.常用匹配模式

模式描述
\w匹配字母数字及下划线
\W匹配非字母数字下划线
\s匹配任意空白字符,等价于[Mt\n\Nf]
\S匹配任意非空字符
\d匹配任意数字,等价于[0-9]
\D匹配任意非数字
\A匹配字符串开始
\Z匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串
\G匹配最后匹配完成的位置
\n匹配一个换行符
\t匹配一个制表符
$匹配字符串的末尾。
.匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
[…]用来表示一组字符,单独列出:[amk]匹配'a','m'或'k'
[^…]不在口中的字符:abc匹配除了a,b,c之外的字符。
*匹配0个或多个的表达式。
+匹配1个或多个的表达式。
?无配0个或1个由前面的正则表达式定义的片段,非贪婪方式
{n}精确匹配n个前面表达式。
{n,m}匹配n到m次由前面的正则表达式定义的片段,贪婪方式
a|b匹配a或b
()匹配括号内的表达式,也表示一个组

正则匹配:

import re
# str1 = 'hello world 123\n'
# print(re.findall('\w', str1))
# print(re.findall('\W', str1))
# print(re.findall('\d', str1))
# print(re.findall('\D', str1))

输出

['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd', '1', '2', '3']
[' ', ' ', '\n']
['1', '2', '3']
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', ' ', '\n']

识别IP地址

import re
str2 = '192.168.1.100 255.255.255.255 300.300.300.300'import ipaddress
ips = re.findall(r'\d+\.\d+\.\d+\.\d+', str2)
for ip in ips:try:ipaddress.ip_address(ip)print(f'{ip} is a valid IP address')except ValueError:print(f'{ip} is not a valid IP address')

输出

192.168.1.100 is a valid IP address
255.255.255.255 is a valid IP address
300.300.300.300 is not a valid IP address

二.面向对象


一、面向对象基本概念
  • 类:用几大特征表述一一类事物。类要表达的是一个抽象的概念。

  • 对象:对象是类的具体实现。举个例子,类像是一张图纸,对象是由这张图纸产出的具体物品。类只有一个,但是对象可以同这个类实例出多个。

对象是类的实例,类是对象的模板。

类中的成员只有属性和方法,不要裸露地把判断和循环写在类中,而要用方法(相当于函数)包起来。

面向对象的本质就像「搭乐高」:

  1. 每个积木块都是独立的小机器人(对象)

    • 有自己专属的技能(方法)

    • 携带自己的工具包(属性)

    • 比如「汽车积木」自己会跑、有四个轮子

  2. 积木之间通过标准接口互相连接

    • 不需要知道对方内部怎么运作

    • 只要说「帮我运货」,卡车积木就会自动完成任务

  3. 可以批量生产相似机器人

    • 用「机器人模具」(类)造出一模一样的

    • 还能给模具加新功能(继承)

    • 比如给「动物模具」加翅膀,立刻生成会飞的动物

  4. 同一个指令能触发不同反应

    • 对所有积木喊「干活」,有的扫地、有的做饭(多态)

    • 每个积木按自己的方式响应

最终效果:用现实世界的思维方式,把复杂系统拆解成互相协作的智能模块,像指挥机器人战队一样写程序。

1.1类的定义

#面向对象
class car():classcar(object):

1.2类的实例化


#创建对象
bmw = car()
print(bmw.color)
bmw.run()

1.3类的基本结构

#面向对象
class car():color = 'red'def run(self):print('running')#创建对象
bmw = car()
print(bmw.color)
bmw.run()

1.4类的命名

类的命名推荐使用驼峰命名法,如:

MyCar,MaHuaTeng;

1.5对象、类的相关操作

1.5.1成员等级

python对成员的保护分为两个等级:

  1. 私有的(private):在本类内部可以访问,类的外部不可以访问。(python中属性或者方法前面加两个下划线"_"

  2. 公有的(public):在本类的内部和外部都可以访问

  3. 受保护的(protect)(了解)在其他高级语言中,如java,php,c++等语言,有三个等级:private,public,protected。不能够继承的。

三、面向对象三大特征

2.1封装
2.2继承

一个类继承另外一个类,那么该类就是子类(衍生类),被继承的这个类叫做父类(超类,基类)

继承:

(1)单继承(2)多继承

python3中所有的类都默认继承父类object

2.2.1单继承

(1)子父继承之后,子类可以调用父类的公有的属性和方法

(2)子父继承之后,子类不可以调用父类的私有成员

(3)子父继承之后,子类可以改写父类的方法

(4)子父继承之后,子类优先调用自己的成员属性方法,如果没有则调用父类的属性方法,如果都没有,直接报错

#面向对象
class car():color = 'red'__logo = '宝马'  #私有属性logo = __logodef run(self):print('跑起来了')def __price(self):print('价格是100万')def price(self):self.__price()  #在类的内部访问私有方法def speak(self):print('我的颜色是'+ self.color)class new_car(car): #继承def speak(self):return '我的颜色是'+ self.color + ', 我的品牌是' + self.logonew_car = new_car()
print(new_car.speak())

输出

我的颜色是red, 我的品牌是宝马
2.2.2多继承

super的用法:(1)super本身是一个类,super()是一个对象,用于调用父类的绑定方法(2)super()只应用在绑定方法中,默认自动传递self对象(前提:super所在作用域存在self)(3)super用途:解决复杂的多继承调用关系

classFather():property="抽烟喝酒"deff_hobby():print("出去喜欢抽烟喝酒")
classMother():property="化妆品包包"defm_hobby(self):print("逛街买化妆品包包")classSon(Father,Mother):property="打游戏看直播"#1.利用类来调用父类的属性和方法defskill1(self):Father.f_hobby()print(Mother.property)#2.利用对象调用父类的属性和方法#self在调用父类方法属性的时候,在本类有的时候,先调用自己的,如果没有,再调用父类的defskill2(self):self.m_hobby()#无,调用父类print(self.property)#有,调用自身#3.利用super调用父类的属性和方法#super()只调用父类的相关公有成员,不会调用自己本类中的公有成员,super()特指调用父类,跟self有区别defskill3(self):print(super().property)#多个父类,按顺序继承super().m_hobby()#只应用在绑定方法中

self和super区别(****)

当使用self调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找;而当使用super时,则从父类的方法列表中开始找,然后调用父类的这个方法。

2.2.3菱形继承

多继承的弊端会造成菱形继承这种情况,照不清调用顺序

super对象按照mro列表的顺序依次调用,解决菱形继承存在问题

2.3多态

概念:不同的子类对象,调用相同的父类方法,产生了不同的执行效果

关键字:继承改写

多态作用:在不改写父类代码的前提下,能实现不同的效果

四、魔术方法

魔术方法:特定时机自动触发

3.1__init__魔术方法(****)
class car():def __init__(self,color,logo):self.color = colorself.logo = logodef speak(self):print('我的颜色是'+ self.color + ', 我的品牌是' + self.logo)car1 = car('红色','宝马')
car1.speak()

输出

我的颜色是红色, 我的品牌是宝马

http://www.dtcms.com/a/506631.html

相关文章:

  • 网站的三大标签宁波专业seo服务
  • Day6C语言前期阶段练习之汉诺塔问题
  • Apache Spark 集群部署与使用指南
  • 基于3D LiDAR的作物排检,用于在不同种植密度下成熟时的大豆
  • Python使用Medical Information Dataset实战2025.07版(上)
  • 基因组学中的深度学习!
  • 基于容器适配器模式的 Stack 与 Queue 实现:复用底层容器的优雅设计
  • Kafka面试精讲 Day 26:Kafka集群部署与配置
  • 73_基于深度学习的水面漂浮垃圾检测系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • 在JavaScript中,清除 Canvas 画布上的内容
  • 方便做简笔画的网站或软件公司人员管理系统
  • SQL之参数类型讲解
  • CTFSHOW—WEB5
  • UU远程深度测评:重构远程控制体验的“无套路”标杆
  • 提升 iOS 26 系统流畅度的实战指南,多工具组合监控
  • vue3:vue3 + elementplus + pinia实现js的XMLHttpRequest 下载功能。
  • 如何在macOS上免密登录阿里云ECS服务器
  • 把“天猫”装进 JVM:Java 关键词商品爬虫从 0 到 1(含完整可运行代码)
  • tar打包过滤指定目录指南
  • 塘厦镇住房规划建设局网站wordpress主题生成
  • 5-SpringCloud-服务链路追踪 Micrometer Tracing
  • 网站怎样做谷歌推广没有网站怎么做淘宝客
  • 【C/C++基本功】union联合体彻底详解
  • 万字 Apache ShardingSphere 完全指南:从分库分表到分布式数据库生态
  • WebPages PHP:深入理解与高效实践
  • 数据结构-滑动窗口三题
  • 做黑网站吗怎么建设营销型网站
  • 免费企业网站程序关注love石家庄公众号微信
  • 如何进行网站开发网站开发郑州
  • 东营建网站wordpress商城汉化主题