繁体   English   中英

具有不同数量输出的功能

[英]Function with varying number of outputs

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

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

model1, model2 = getmodel(model1,model2)

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

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

def getmodel(*models):

    pass

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

您可以使用元组或包含不同数量模型的列表。

就像是 :

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

和:

def getmodel(models):
    loaded_models = []
    for model in models:
        loaded_models.append(model_loading_function(model))
    return loaded_models
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函数返回一个列表,但它将被分配给各个变量。

只需使用map

model1, model2, model3 = map(your_load_model_function, (model1, model2, model3))
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中返回多个值,您可以返回一个元组或一个列表,供用户解压缩。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM