Python知识分享第二十一天-装饰器&正则

发布于:2024-12-08 ⋅ 阅读:(111) ⋅ 点赞:(0)

进阶语法

上下文管理器
	概述
		一个类只要实现了
			__enter__()
			__exit__()
			它就是 上下文管理器类 它的对象称之为  上下文管理器对象
	with语法解释
		格式
			with上下文管理器对象:
    代码块
		特点
			当with的代码执行完毕后 会自动释放 上下文管理器对象
		原理
			with语句执行前 会自动调用上下文管理器对象的
				__enter__()
					初始化
					创建对象用
			with语句执行后 会自动调用上下文管理器对象
				__exit__()
					释放资源
	案例
		自定义MyFlie类 模拟open()函数 实现读写文件操作
生成器
	概述
		Generator 基于一定的规则来生成数据 但是不是一次 而是用一批生成一批 这样做可以降低内存占用
	好处
		降低内存
		如何查看容器类型 内存占用情况
			import sys
			result = sys.getsizeof(对象)
			print(result)
			例子 :
import sys
list_num = [i for i in range(10000)]
list_num2 = (i for i in range(10000))

s1 = sys.getsizeof(list_num)
s2 = sys.getsizeof(list_num2)

print(s1, type(list_num))
print(s2, type(list_num2))
s1打印结果:  85176 <class 'list'>
s2打印结果:  192 <class 'generator'>
	格式
		推导式写法
			g1 = (i for i in range(10))
		yield 关键字
			记录数据
			并把数据存储到生成器对象中
			程序没有执行结束前会阻塞 程序结束会将结果生成器对象 返回
	如何获取生成器中的数据
		方式一
			next()
		方式二
			for循环
	案例
		生成批次数据
扩展迭代器
property介绍
	概述
		它可以修饰函数 实现把函数当做变量来用
	目的/好处
		简化编程
	用法格式
		充当解释器
@property
def age(self):
    return self.age
				@age.setter
def age(self, age):
    self.__age = age
			修饰类变量
				get 和set方法不变
				age = property(get_age, set_age)
			测试
				s= Student()
print(s.age)
s.age = 30
print(s.age)
正则表达式
	概述
		正确的 符合特定规则的字符串 -> 正则表达式
Regular Expresion -> re模块
		细节
			关于正则规则 多用 就慢慢记住了
			正则不独属于哪个语言
			Pyonthon中的正则
				math()
				search()
				complie().sun()
					简写成:sub()
					回顾replace()
		语法
			1.导包
				import  re
			2.正则匹配 查找 替换
				result = re.math(正则,,要检验的字符串, flags)
					全瓷匹配
				result = re.search(正则.要校验的字符串,flags)
					查找 分段匹配
				result= compile(正则表达式).sub(新字符串,旧字符串)
					替换
			3.result.group()
				获取到正则处理结果
		正确规则
			字符串
				 a           代表: 1个普通的字符a, 你还可以写 b, c, abc, 就是普通字符的意思.
				        .           代表: 任意的1个字符, 除了换行等.
				        \.          代表: 1个普通的.  一般邮箱中用
				        [abc]       代表: a,b,c任意的1个字符
				        [^abc]      代表: 除了a,b,c外, 任意的1个字符
				        \d          代表: 任意的1个数字, 等价于: [0-9]
				        \D          代表: 任意的1个非数字, 等价于: [^0-9]
				        \s          代表: 空白字符, \t, 空格, \n...
				        \S          代表: 非空白字符(\s取反)
				        \w          代表: 单词字符(非特殊字符), 即: 数字, 字母, 下划线, 汉字, 等价于: [a-zA-Z0-9_]
				        \W          代表: 特殊字符, 上述取反.
			首尾标记符
				^
				$
			数量词
				 ?            代表: 前边的内容出现 0次或者1次
				        *            代表: 前边的内容出现 0 - n次, 至少0次, 至多n次
				        +           代表: 前边的内容出现 1 ~ n次, 至少1次, 至多n次
				        {n}         代表: 前边的内容 恰好出现 n次
				        {n,}        代表: 前边的内容 至少出现n次, 至多无所谓
				        {n,m}       代表: 前边的内容 至少n次, 至多m次, 包括n和m
			分组相关
				|
					或
				()
					分组 默认最外层是 第0组
				\n
					(\n):这是一个普通的捕获组(capturing group),用于匹配换行符 \n。捕获组可以用于捕获匹配的内容,以便后续引用或进一步处理
					(?<=\n):这是一个正向预查(positive lookbehind)构造,用于匹配在某个位置之前必须存在的内容。具体来说,(?<=\n)表示在当前位置之前必须满足存在换行符
					(?=\n):这是一个正向预查(positive lookahead)构造,用于匹配在某个位置之后必须存在的内容。具体来说,(?=\n)表示在当前位置之后必须满足存在换行符 \n
				扩展
					(?P<分组名>)
					(?p=分组名)

坚持分享 共同进步 如有错误 欢迎指出


网站公告

今日签到

点亮在社区的每一天
去签到