如何重构Python中三个相似的Excel计算方法?
重构重复的Python方法
原代码中三个方法逻辑高度重复,仅起始行号存在差异,我们可以将其重构为一个通用方法,以下是两种实用的实现方式:
方式一:直接传入起始行号
这种方式简洁直接,适合明确知道目标行号的场景:
def calculate_total_fruit_north_mid_south(start_row): sheet_factuur = excelWorkbook['Facturen '] # 提取南北中三个区域的数值 total_north = sheet_factuur.cell(row=start_row, column=5).value total_mid = sheet_factuur.cell(row=start_row + 1, column=5).value total_south = sheet_factuur.cell(row=start_row + 2, column=5).value # 计算总量并打印 total = total_north + total_mid + total_south print(total)
调用示例
# 计算Ananas的总量(起始行6) calculate_total_fruit_north_mid_south(6) # 计算Apples的总量(起始行9) calculate_total_fruit_north_mid_south(9) # 计算Waspeen的总量(起始行12) calculate_total_fruit_north_mid_south(12)
方式二:通过水果名称映射行号
这种方式可读性更强,调用时直接传入水果名称即可:
# 定义水果名称与对应起始行的映射关系 FRUIT_START_ROWS = { 'Ananas': 6, 'Apples': 9, 'Waspeen': 12 } def calculate_total_fruit_north_mid_south(fruit_name): # 获取对应起始行,若水果名称不存在则提示并返回 start_row = FRUIT_START_ROWS.get(fruit_name) if not start_row: print(f"未找到水果'{fruit_name}'的行号配置") return sheet_factuur = excelWorkbook['Facturen '] total_north = sheet_factuur.cell(row=start_row, column=5).value total_mid = sheet_factuur.cell(row=start_row + 1, column=5).value total_south = sheet_factuur.cell(row=start_row + 2, column=5).value total = total_north + total_mid + total_south # 打印时带上水果名称,结果更清晰 print(f"{fruit_name}的南北中区域总量:{total}")
调用示例
calculate_total_fruit_north_mid_south('Ananas') calculate_total_fruit_north_mid_south('Apples') calculate_total_fruit_north_mid_south('Waspeen')
重构思路说明
- 提取重复逻辑:三个原方法的核心操作都是获取连续三行第5列的值、求和、打印,唯一变量是起始行号
- 抽象可变参数:将起始行号作为方法参数,或通过映射表关联水果名称与行号,让方法具备通用性
- 降低维护成本:后续新增水果时,只需添加映射表条目或传入新的起始行号,无需复制粘贴整个方法代码
内容的提问来源于stack exchange,提问作者mightycode Newton
相关产品推荐
相关产品推荐

