在函数中组合 eval() 和 return

Combining eval() and return in a function

我正在尝试使用一个函数迭代 return 多个机器学习模型(pickles),其中一个函数基于我指定的准确度截止值。

我的问题是我试图用 eval 加载泡菜,因为它们的名称对应于 sdf['number'] 给出的数字。 eval 函数没有加载我的泡菜,除此之外,我希望它们被我的函数加载和 returned。我已经通过尝试在加载每个模型后直接 运行 数据来测试它,然后再移动到下一个模型,但是它是 returning “learn0 not defined” 例如。

关于如何更好地迭代执行此操作的任何想法?

Variables Explained:

jar = A list of the different variable names (learner names) that I expected it to load. For example, learn0, learn1, etc.

cutoff = Accuracy Cutoff

sdf_temp = Temporary Study DataFrame

def piklJar(sdf,cutoff):
    sdf_temp = sdf[sdf['value'] <= cutoff]
    
    jar = []
    i=0
    for pklNum in sdf_temp['number']:
        eval('"learn{} = load_learner({}/Models/Pkl {}.pkl)".format(i,datapath,pklNum)')
        jar.append('learn{}'.format(i))
        
        i+=1
        
    return jar
不需要

eval。您的示例不是工作代码,但这大致相同:

def piklJar(sdf,cutoff):
    sdf_temp = sdf[sdf['value'] <= cutoff]
    return [load_learner(f'{datapath}/Models/Pkl {pklNum}') for pklNum in sdf_temp['number']]

调用jar = pklJar(...)后,jar[0]相当于learn0jar[1]相当于learn1,等等。各种load_learner调用存储在列表理解生成的列表中。