在一个函数中,根据传入的参数来决定某一个定义的值,代码如下:
def result(self, num):
if num ==1:
name = "axxx"
十几行代码
elif num ==2:
name = "bxxx"
十几行代码
elif num ==3:
name = "cxxx"
十几行代码
elif ……
目前的代码非常臃肿,每个if语句里面的“十几行代码”都是一模一样的,主要是根据name的值对数据库进行一系列操作。我能想到的精简方案是再定义一个新的函数出来,把这“十几行代码”放进去,把name作为参数传递进去,然后所有的if判断语句都去调用这个函数,但是感觉这代码还是好臃肿啊。请问有没有更加优美的写法?
啊 我不太理解 既然那十几行代码一模一样,那么为什么要单独写在每个elif下面,直接提出来不就行了
知乎上有,这个是字典实现类似switch功能的
def case1(): # 第一种情况执行的函数
print('This is the case1')
def case2(): # 第二种情况执行的函数
print('This is the case2')
def case3(): # 第三种情况执行的函数
print('This is the case3')
def default(): # 默认情况下执行的函数
print('No such case')
switch = {'case1': case1, # 注意此处不要加括号
'case2': case2,
'case3': case3,
}
choice = 'case1' # 获取选择
switch.get(choice, default)()
那十几行代码还是直接传参比较好,python下取消了switch case的语法,转而用elif。如果非要用case,重新写个case的函数吧