You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化三个返回逻辑相似的Python业务方法?

代码优化方案

1. 提取通用过滤逻辑

三个过滤方法的核心流程高度重复:生成水果正则组 → 调用对应正则生成函数 → 从固定文本源匹配结果。可以把这部分重复逻辑抽成一个私有公共方法,仅通过传入不同的正则生成函数来区分不同的过滤目标:

def _filter_verdi_data(self, regex_builder):
    # 复用水果组生成逻辑(若三个方法都依赖此逻辑)
    fruits_groups = (f"(?:{fruit})" for fruit in self.extractingText.list_fruit)
    fruits_combined = f'(?:{"|".join(fruits_groups)})'
    # 统一获取文本源,避免重复书写路径
    target_text = self.extractingText.text_factuur_verdi[0]
    # 生成对应正则并匹配
    pattern = regex_builder(fruits_combined)
    return re.findall(pattern, target_text)

之后原有的三个过滤方法可以简化为极简的委托调用:

def filter_verdi_total_fruit_cost(self):
    return self._filter_verdi_data(self.regex_fruit_cost)

def filter_verdi_total_number_fruit(self):
    return self._filter_verdi_data(self.regex_total_number_fruit)

def filter_verdi_fruit_name(self):
    return self._filter_verdi_data(self.regex_fruit_name)

2. 可选:整合方法内统一文本源(极致优化)

如果担心多次访问text_factuur_verdi[0]的开销(虽然属性访问成本极低,但统一管理更清晰),可以在整合方法中先获取一次文本源,再传给公共过滤方法:

def _filter_verdi_data(self, regex_builder, target_text):
    fruits_groups = (f"(?:{fruit})" for fruit in self.extractingText.list_fruit)
    fruits_combined = f'(?:{"|".join(fruits_groups)})'
    pattern = regex_builder(fruits_combined)
    return re.findall(pattern, target_text)

def show_extracted_data_from_file(self, file_name):
    self.extractingText.extract_text_from_image(file_name)
    target_text = self.extractingText.text_factuur_verdi[0]
    
    total_fruit = self._filter_verdi_data(self.regex_total_number_fruit, target_text)
    fruit_name = self._filter_verdi_data(self.regex_fruit_name, target_text)
    fruit_total_cost = self._filter_verdi_data(self.regex_fruit_cost, target_text)

    return "\n".join(f"{a}\t{b}\t{c}" for a, b, c in zip(total_fruit, fruit_name, fruit_total_cost))

优化核心收益

  • 减少维护成本:后续修改正则生成逻辑、文本源路径,只需要改动公共方法一处即可,避免在三个地方重复修改。
  • 提升代码可读性:简化后的过滤方法仅保留核心意图(指定用哪个正则生成器),逻辑一目了然。
  • 扩展性更强:如果后续新增同类过滤需求,只需要新增一个正则生成函数和一行委托代码即可。

内容的提问来源于stack exchange,提问作者mightycode Newton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:35:23