Есть ли стандарт при организации функций, которые зависят друг от друга в Python? - PullRequest
0 голосов
/ 07 мая 2019

Я создал процедуру, которая использует несколько функций. Некоторые требуют входных данных от возвращаемых значений других функций, а некоторые принимают входные данные, определенные в другом модуле. Мой код работает как задумано. Однако я чувствую, что организация кода не является правильной, в частности, мне пришлось создать функцию под названием «main», которая просто выполняет все другие функции, которые фактически выполняют всю работу (см. Код).

Я хочу знать, имеет ли смысл использовать функцию для управления потоком всех других функций. Хотя он и делает то, что я хочу, я думаю, что важно правильно структурировать код в соответствии с лучшими практиками, чтобы не столкнуться с проблемами и проблемами в будущем, а также другие могут легко его прочитать

Я также пытался не использовать функцию для запуска всех других функций, просто поместил вызовы в самый конец скрипта, но это выглядит просто неловко. Я попытался провести какое-то исследование, но найти «лучшие практики», когда код становится все более сложным и зависит от нескольких входов в одном модуле и других модулях, сложно.

def main(banner, start_year, start_month, end_year, end_month, aggregate):
    '''All this function does is store and run the other functions'''
    store_sales = store_sales_dataframe(banner, start_year, start_month, end_year, end_month)

    query = """select stuff from table"""

    a_df = dataframe(query)

    files = return_sales_files(banner, start_year, start_month, end_year, end_month)

    sales_dfs = csv_to_df(files, b_df, a_df)

    final_df = combine_dfs(sales_dfs)

    if aggregate:
        final_df = aggregate_df(final_df)

    export_to_excel(final_df, banner, start_year, start_month, end_year, end_month)

В идеале я хочу наиболее оптимальный способ управления потоком моих сценариев при использовании множества различных функций. Когда бы ни было возможно, я хотел бы следовать лучшим практикам, прежде чем добавлять свой собственный талант в мой код.

...