所以我想出了这样的东西:
def someFunction(carPool):
dict = {
'redcars': models.RedCar.query.all(),
'bluecars': models.BlueCar.query.all(),
'greencars': models.GreenCar.query.all()
}
cars = dict[carPool.lower()]
但是这里的问题是,每次调用此函数时,所有3个查询都将运行,其结果将存储在字典中。
所以我想问是否有什么办法可以执行类似的操作,但又不运行所有查询或不编写一堆if-elses?
答案 0 :(得分:0)
在寻找方法重现switch语句的堆栈溢出时,我遇到了一个解决方案,该解决方案的字典使用lambda函数作为值,所以我想到了:
def someFunction(carPool):
dict = {
'redcars': lambda _: models.RedCar.query.all(),
'bluecars': lambda _: models.BlueCar.query.all(),
'greencars': lambda _: models.GreenCar.query.all()
}
cars = dict[carPool.lower()]('random var')
也许这不是最好的解决方案,但是它可以完成工作,所以我将其留在这里,也许其他人会发现它很有用,并节省了一些代码行。