Я бы хотел выяснить недостатки использования exec
для импорта.Один из файлов служит интерфейсом для реальных реализаций определенных функций в зависимости от выбранного проекта (фреймворк предназначен для работы над несколькими проектами).
Первый вариант использования выглядит следующим образом:
exec ("from API.%s.specific_API_%s import *" % (project, project))
Таким образом, мне не нужно жестко кодировать ничего, кроме переменной project
, которая вводится в сам интерфейсный модуль.
Это другой способ:
if project == 'project_one':
from API.project_one.specific_API_project_one import *
elif project == 'project_two':
from API.project_two.specific_API_project_two import *
elif project == 'project_three':
from API.project_three.specific_API_project_three import *
Таким образом, я должен изменять этот интерфейсный файл каждый раз, когда добавляется новый проект для поддержки.