Python如何捕获RuntimeError并依次执行多个拟合函数输出成功结果
解决方法
核心通过try-except异常捕获机制,逐个尝试所有拟合函数,遇到指定错误直接跳过即可,修改后的主逻辑参考如下:
def main(): import pandas as pd df=pd.read_json('url') dati=[] dati_giornalieri=list(df.nuovi_positivi) u=len(dati_giornalieri) for i in range(u-60,u): dati.append('0') dati[i-u+60]=dati_giornalieri[i] # 按顺序填入你编写的所有stage拟合函数,函数名不加括号 stage_func_list = [stage1, stage2, stage3, stage4, stage5, stage6, stage7, stage8, stage9, stage10] for stage_func in stage_func_list: try: stage_func(dati) # 只捕获拟合失败抛出的RuntimeError,避免隐藏其他代码bug except RuntimeError: # 可选:打印失败提示方便排查 # print(f"{stage_func.__name__} 拟合失败,尝试下一个函数") continue
可选优化项
- 如果不需要保留所有拟合成功的结果,只要第一个可用的结果,在
stage_func(dati)执行后加break即可终止后续尝试 - 可以给每个stage函数增加返回值,把拟合得到的参数存下来统一处理,不需要每张图单独弹出
- 如果拟合的初始参数有参考范围,可以给
curve_fit加p0参数传入初始猜测值,能大幅降低拟合失败的概率
内容的提问来源于stack exchange,提问作者Fllecha
相关产品推荐
相关产品推荐

