2014-02-11 1 views
0

Если это так, пожалуйста, не стесняйтесь закрыть вопрос как дубликат. :)обертка для множества функций для проверки существующих данных

В моем коде, у меня есть много блоков, которые выглядят как

try: 
    load_from_disk(pathtofile) 
except IOError: 
    datapiece = comp_this_data(**dictofargs) 
    save_to_disk(pathtofile, datapiece) 

Вопрос: Как определить процедуру, которая заботится о возможных предварительно вычисленных данных для различных comp_this_data?

Возможно, это простой случай для декораторов питона. Однако, как я понял, декоратор является частью определения функции, которое я не хочу менять.

Любые идеи?

ответ

0

Вот пример того, как можно обернуть несколько функций вычислений:

def compute_and_save(compute_f, file, *args, **kwargs): 
    try: 
     load_from_disk(file) 
    except IOError: 
     datapiece = compute_f(*args, **kwargs) 
     save_to_disk(file, datapiece) 

if __name__ == "__main__": 
    compute_and_save(comp_this_data, file, **dictofargs) 
    compute_and_save(comp_this_data_2, file, **dictofargs) 
+0

Как этот ответ «[принимать] заботиться о возможных предварительно вычисленных данных для различных' comp_this_data'»? – jonrsharpe

+0

Ну, это так, поскольку вы можете передать ему разные 'comp_this_data'. – Jan

+0

Из кода OP, похоже, что вычисленные данные хранятся в файле. Если файл отсутствует (т. Е. Мы получаем IOError), мы предполагаем, что его нужно снова вычислить. –

 Смежные вопросы

  • Нет связанных вопросов^_^