как уменьшить повторение в функциях, где основное различие заключается в названии вызываемых подфункций
код такой:
def func1(p1,p2,p3):
#do samething
res = func_a(p1,p3) # a
res = func_a(p2,p3)
return res
def func2(p1,p2,p3):
#do samething
res = func_b(p1,p3) # b
res = func_b(p2,p3)
return res
def func3(p1,p2,p3):
#do samething
res = func_c(p1,p3) # c
res = func_c(p2,p3)
return res
Я не уверен, что добавление дополнительного параметра к функциям - хорошая идея, потому что у меня уже есть 3 параметра.
Но без дальнейшей оптимизации текущий код слишком много повторяется в
#do samething
часть. (например, код происхождения ниже).
Как его улучшить?
@staticmethod
def align_bev_tuple(relative_poses_tuple, t_index, *bev):
if t_index == 0:
return bev
ego_motion_matrix, dataAug_compensate_matrix = relative_poses_tuple
if dataAug_compensate_matrix is not None:
bev = list_2d_affine(
bev, dataAug_compensate_matrix[:, t_index, :, :])
output = list_2d_affine(
bev, ego_motion_matrix[:, t_index, :, :])
return output
@staticmethod
def align_bev_single_state(relative_poses_tuple, t_index, hidden_state):
if t_index == 0:
return hidden_state
ego_motion_matrix, dataAug_compensate_matrix = relative_poses_tuple
if dataAug_compensate_matrix is not None:
hidden_state = bev_affine(
hidden_state, dataAug_compensate_matrix[:, t_index, :, :])
output = bev_affine(
hidden_state, ego_motion_matrix[:, t_index, :, :])
return output
@staticmethod
def align_bev_tensor(relative_poses_tuple, t_index, hidden_state):
if t_index == 0:
return hidden_state
ego_motion_matrix, dataAug_compensate_matrix = relative_poses_tuple
if dataAug_compensate_matrix is not None:
hidden_state = tensor_2d_affine(
hidden_state, dataAug_compensate_matrix[:, t_index, :, :])
output = tensor_2d_affine(
hidden_state, ego_motion_matrix[:, t_index, :, :])
return output