Текущая настройка для моего кода Python выглядит следующим образом:
Также используется для других проектов:
general_settings.py - заботится об импорте и некоторых общих служебных функциях
actual_functions.py - «рабочие лошадки» для проекта
Специфичный для проекта
variable_names.py = это где строки объявлены в переменных
run_project.py - это где я вызываю функции
Я использую информацию из таблиц Excel, которые считываются в кадры данных Pandas.
Поскольку для каждого проекта исходные таблицы Excel могут быть разными, я использую имя переменной для столбцов в коде.
Например, если я хочу суммировать остаток столбца, вместо того, чтобы делать
df['Balance'].sum()
Сначала я определил бы баланс:
bal = 'Balance' and then use df[bal].sum()
Причина в том, что иногда исходные файлы Excel имеют другой заголовок, например «Текущий баланс» вместо «Баланс».
Обновляя переменную 'bal', я легко могу объяснить это, это также позволяет мне использовать короткие имена переменных, держать код коротким и использовать автозаполнение (я использую PyCharm).
В actual_functions.py и run_project.py я использую оператор из general_settings import * and from variable_names import *
Это прекрасно работает, но не похоже на оптимальное решение.
1. В случае, если я хочу использовать actual_functions.py для запуска другой ленты, я должен изменить инструкцию import в верхней части этого скрипта.
2. Я использую глобальные переменные для прохождения строк, что не очень хорошая практика
Две вышеуказанные точки могут быть решены с помощью параметров в функциях, в которых эти переменные определены, однако, поскольку существует довольно много имен переменных (около 20), невозможно импортировать каждое из имен переменных в функции в actual_functions.py.
Возможно ли какой-нибудь файл настроек (словарь) импортировать имена / строки переменных в каждую из функций? Или другое решение, которое мне не хватает? Любые указатели будут оценены.
Спасибо за ответ ниже, я нашел эту ссылку для использования подклассов http://devanla.com/case-for-inheriting-from-pandas-dataframe.html