具有不同数量输出的功能

时间:2019-08-13 14:57:18

标签: python

我正在尝试构建一个python函数,以加载用户指定的已保存模型。我想设计该功能,以便用户可以提供任意数量的模型。结果,输出的数量可以变化。

用户可以通过以下方式使用该功能。

model1, model2 = getmodel(model1,model2)

model1, model2, model3 = getmodel(model1,model2,model3)

到目前为止,我还没有走得很远。

def getmodel(*models):

    pass

如何设置功能以实现所需的功能?在函数定义中,还有另一个函数“ load_function”可用于加载任何单个模型。

4 个答案:

答案 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中返回多个值,您可以返回一个元组或一个列表,供用户解压缩。