[英]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.