Как грамотно организовать данные для функции?

В моем модуле есть процедура, выполняющая создание прописи. Она принимает несколько аргументов - это данные, различные при каждом запуске программы. Но есть ещё данные по типу межстрочного интервала, размера страницы прописи и т.д. То есть те данные, которые являются как бы константами, но если вдруг понадобиться начать создавать прописи другого размера (то есть для другого проекта; другой кейс), было бы удобнее просто изменить лишь этот параметр, вместо переписывания кода.

Вот данная функция

def make_prescription(font_name, lang, save_path):
    # ____________________________________________________
    sheet_size = (2480, 3508)
    up_margin = 190
    bottom_margin = 50
    line_height = 2
    letter_min_size = 75  # Данные "костанты"
    letters_sets = {
        "eng": "abcdefghijklmnopqrstuvwxyz",
        "rus": "абвгдеёжзийклмнопрстуфхцчшщъыьэюя",
    }
    # ____________________________________________________
    # Алгоритм создания прописи
    pass

Где лучше хранить значения sheet_size, ..., letters_sets? Оставить в теле функции, вынести в начало модуля, в аргументы, в файл какой-нибудь или есть решение получше?


Ответы (1 шт):

Автор решения: CrazyElf

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

В принципе, есть и специальные библиотеки для работы с конфигурационными файлами, но так в общем json довольно удобен и понятен как для того, кто будет его редактировать вручную (в любом текстовом редакторе), также его довольно просто читать и обрабатывать в программе на питоне .

→ Ссылка