我正在尝试构建一个python函数,以加载用户指定的已保存模型。我想设计该功能,以便用户可以提供任意数量的模型。结果,输出的数量可以变化。
用户可以通过以下方式使用该功能。
model1, model2 = getmodel(model1,model2)
model1, model2, model3 = getmodel(model1,model2,model3)
到目前为止,我还没有走得很远。
def getmodel(*models):
pass
如何设置功能以实现所需的功能?在函数定义中,还有另一个函数“ load_function”可用于加载任何单个模型。
答案 0 :(得分:1)
您可以使用元组或包含不同数量模型的列表。
类似的东西:
model1, model2 = getmodel((model1,model2))
然后:
def getmodel(models):
loaded_models = []
for model in models:
loaded_models.append(model_loading_function(model))
return loaded_models
答案 1 :(得分:0)
def getmodel(*models):
all_models=[]
for model in models:
all_models.append(load_function(model))
return all_models
在参数上使用星号可以使其接受任意数量的输入,并将其转换为列表。
返回列表时,如果您尝试将所有值都设置为一个列表,则python会自动将这些值解压缩为单独的变量。
a, b, c = ["apple", "bee", "cat"]
这样,尽管getmodel
函数返回一个列表,但该列表将被分配给各个变量。
答案 2 :(得分:0)
只需使用map
:
model1, model2, model3 = map(your_load_model_function, (model1, model2, model3))
答案 3 :(得分:0)
def load_model(model):
return "loaded : "+model # Replace by actual logic
def load_models(*models):
result = tuple( load_model(model) for model in models)
if len(result) == 1:
return result[0]
return result
modelA = load_models("modelA") or load_model("modelA")
modelB, modelC = load_models("modelB", "modelC")
print(modelA,modelB,modelC)
使用这两个功能,您可以处理任何用例,这对您的用户将很方便。要在python中返回多个值,您可以返回一个元组或一个列表,供用户解压缩。