千家信息网

python中怎么实现代码重构

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,python中怎么实现代码重构,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。重构前import redef count(s):while
千家信息网最后更新 2026年11月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

重构原则

  1. 重构代码要分析原代码,找出重复代码将其封装成函数。

  2. 注释清晰、完整,便于将来升级迭代。

  3. 代码模块化,模块化可以提高代码复用率,隔离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安全错误 数据库的锁怎样保障安全 深圳恒合互联网络科技有限公司 互联网科技ppt模板 万达互联网科技 富国互联网科技创新基金 成都玖崟互联网科技有限公司乐商圈怎么样 深圳前海聚择互联网科技有限公司 华服互联网科技官网 湖北码尼互联网科技有限公司电话 语蝶互联网科技有限公司 湖南一路畅行互联网科技 乌苏新华互联网科技做什么的 燊美集互联网科技有限公司 威龙国际互联网科技公司 科技互联网海报 美国互联网科技实力 山东星卡互联网科技有限公司官网 云南省自由互联网科技有限公司 互联网安防科技感 互联网科技平台产品运营 北京品多多互联网科技有限公司 互联网黑科技 山东特亿宝互联网科技有限公司 奇酷互联网科技公司 银优互联网科技有限公司 栖莱科技互联网股份有限公司 互联网科技扶贫时间 互联网安防科技感 现代互联网科技公司 科技互联网专业务虚会材料 六子台科技互联网展会
0