python中怎么实现代码重构
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,python中怎么实现代码重构,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。重构前import redef count(s):while
千家信息网最后更新 2025年12月03日python中怎么实现代码重构
python中怎么实现代码重构,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
重构前
import redef count(s):while '/' in s:result = re.findall('([-]?\d+\.\d+|[-]?\d+)/([-]?\d+\.\d+|[-]?\d+)', s)for i in result:s = s.replace(f'{i[0]}/{i[1]}', f'{float(i[0]) / float(i[1])}')while '*' in s:result = re.findall('([-]?\d+\.\d+|[-]?\d+)\*([-]?\d+\.\d+|[-]?\d+)', s)for i in result:if float(i[0]) < 0 and float(i[1]) < 0:s = s.replace(f'{i[0]}*{i[1]}', f'+{float(i[0]) * float(i[1])}')else:s = s.replace(f'{i[0]}*{i[1]}', f'{float(i[0]) * float(i[1])}')result = re.findall('([-]?\d+\.\d+|[-]?\d+)', s)x = 0for i in result:x += float(i)s = str(x)return sdef cal(s):s = s.replace(' ', '')while '(' in s or ')' in s:ret = re.findall('\(([^()]+?)\)', s)for i in ret:s = s.replace(f'({i})', count(i))s = s.replace('--', '+')else:s = count(s)return s重构原则
重构代码要分析原代码,找出重复代码将其封装成函数。
注释清晰、完整,便于将来升级迭代。
代码模块化,模块化可以提高代码复用率,隔离bug。
重构后的代码
import redef cal(s):'''处理含括号四则运算字符串主程序。先计算小括号里的内容,将该内容替换成计算后的值,最终计算出结果。'''def count(s):'''计算不含括号的四则运算,先计算乘除法,再计算加减法'''while '/' in s:result = re.findall('([-]?\d+\.\d+|[-]?\d+)/([-]?\d+\.\d+|[-]?\d+)', s)for i in result:s = s.replace(f'{i[0]}/{i[1]}', f'{float(i[0]) / float(i[1])}')while '*' in s:result = re.findall('([-]?\d+\.\d+|[-]?\d+)\*([-]?\d+\.\d+|[-]?\d+)', s)for i in result:if float(i[0]) < 0 and float(i[1]) < 0: # 处理负数乘负数的特殊情况s = s.replace(f'{i[0]}*{i[1]}', f'+{float(i[0]) * float(i[1])}')else:s = s.replace(f'{i[0]}*{i[1]}', f'{float(i[0]) * float(i[1])}')result = re.findall('([-]?\d+\.\d+|[-]?\d+)', s)x = 0for i in result:x += float(i)s = str(x)return sdef symbol(s):'''处理四则运算字符串中出现连续多个+号和-号'''while '++' in s:s = s.replace('++', '+')while '+-' in s:s = s.replace('+-', '-')while '-+' in s:s = s.replace('-+', '-')while '--' in s:s = s.replace('--', '+')return s s = s.replace(' ', '')while '(' in s or ')' in s:ret = re.findall('\(([^()]+?)\)', s)for i in ret:s = s.replace(f'({i})', count(i))s = symbol(s) # 处理剥去括号后出现减去负号的情况else:s = count(s)return sprint(cal('10 - 3 * ( (50-30 +(-10/5) * (9-2*5/3 + 7 /3*99/4*2020 +10 * 789/15 )) - (-4*3)/ (16-3*2) )'))print(cal('10-3*(20-10+(-10/5)*27/3/3-(-100)/(10-3*5))'))print(cal('10-3*(20-10+(-10/5)*27/3/3-(-100)/(10-3*5))+(-2.5*-12)'))请注意函数内定义函数的写法,例如上面的count和symbol这2个函数只有cal函数会调用,因此定义在cal函数内部是最佳选择。这样封装性更好,运行效率更高。
在一个函数内调用其他函数时会优先从自己的命名空间内找名字,找不到再去外层,再找不到再去全局找。所以定义在函数内部的名字查找到的速度是最快的。
看完上述内容,你们掌握python中怎么实现代码重构的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
函数
代码
重构
内容
括号
处理
四则运算
四则
运算
名字
字符
字符串
情况
方法
更多
模块
负数
问题
封装
最快
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
你的文档数据库已经被加密
巨灵金融数据库
服务器管理器仪表板怎么设置
seer数据库查化疗
有什么软件开发培训
服务器错误 请稍后再试
外企软件开发英语水平
技术助力网络安全
服务器阵列卡识别不了
软件开发要多少钱呢
java客户端访问服务器
服务器能装成电脑
国家网络安全学院签约
java 电子邮件服务器
展现5G网络技术 英文
头歌数据库实验六索引
注册邮箱失败网络安全
H3C服务器登录管理口
先进网络技术质量
为什么方舟服务器经常消失
网络安全和舆情处置工作
信息安全技术计算机网络安全
优周管理服务器
数据库的种类百度
内部软件开发文档
revit服务器安全问题
软件开发单招面试自我介绍
oralce连接不上数据库
一个账号可以分两个服务器吗
辽阳会员报单软件开发多少钱