lundi 12 août 2019

More elegant way to implement return in a function with conditions

I have a function that takes multiple parameters as input, calculates something, and returns different things depending on the input parameters. Here is my function:

def my_function(other_parameters, evaluate_res=False, data_test =True, data_test=None, eval_mode='loss'):
            if eval_mode == 'r2':
                r2_list_test = [], 
            if eval_mode == 'loss':
                return losses, r2_list,
.... some calculations...

    if evaluate_res:
        if data_test:
            if eval_mode == 'r2':
                return losses, r2_list, r2_list_test
            if eval_mode == 'loss':
                return losses, r2_list, losses_test
        else:
            return losses, r2_list
    else:
        return losses

It looks ugly since it contains repetitions and the desired return is just simply must be

return losses, r2_list, r2_list_test, losses_test

for only those losses, r2_list, r2_list_test, losses_test that exist.

How to decrease number of lines in the code and write it in more elegant way?

Aucun commentaire:

Enregistrer un commentaire