我定义了一堆自定义函数,并发现其中很多包含一些相同或相似的代码块(例如,仅包含略有不同的字符串或参数)。所以像这样:
def func1(a, b, c):
some_identical_code
some_similar_code
more_identical_code
some_unique_code
final_similar_code
# similarly for func2, func3...
我想尝试将它们组合成一个带有额外“设置”参数的函数,因为这些函数显然是相关的,并且使代码更加紧凑。明显但不优雅的流程如下:
def func(a, b, c, setting):
# setting = '1', '2', etc.
some identical code
if setting == '1':
similar_code_1
elif setting == '2':
similar_code_2
# etc. for other settings options
more_identical_code
if setting == '1':
unique_code_1
final_similar_code_1
elif setting == '2':
unique_code_2
final_similar_code_2
# etc. for other settings options
我怎样才能更优雅地做这样的事情?有标准的方法吗?
我尝试的一种选择是使用函数内置的字典来解析类似的代码块:
def func(a, b, c, setting):
# setting = '1', '2', etc.
simdict = {'1': '_1', '2': '_2' ...}
some identical code
similar_code(simdict[setting])
more_identical_code
if setting == '1':
unique_code_1
elif setting == '2':
unique_code_2
# etc. for other settings options
final_similar_code(simdict[setting])
这有帮助,但是 1)我不确定它是否是好的设计,2)只有当相同、相似、独特的代码非常分散时,它才有多大帮助。