Я написал простой инструмент командной строки в Python. Чтобы упростить логику, я использую dict
для хранения команд и обработчиков, что-то вроде этого:Python: Элегантный способ ссылки на функцию, которая будет объявлена позже.
#!/usr/bin/env python
# some code here
DISPACHERS = {
"run": func_run
"list": func_list
}
# other code
Проблема заключается в том, что я должен поставить этот кусок кода после деклараций функции, которая не является стандартной практикой Я видел в других языках (т.е. константы в одном блоке, переменные после, а затем функции).
Я мог бы использовать строки для хранения функции и получить ее с помощью чего-то вроде getattr(__main__, "func_run")
, поэтому я могу придерживаться своих предпочтений, но я думаю, что это «правильный» способ.
Любая идея?
=== Обновление ===
Поскольку это простой питон скрипт, который обрабатывает некоторые задачи автоматизации другого проекта, поэтому было бы лучше, чтобы сохранить его в одном файле (нет другого модуля), если это возможно.
Не могли бы вы поместить их в другой модуль, а затем импортировать их в верхней части вашего скрипта? Почему он не может подняться наверху в текущем состоянии? – Holloway
@ Холлоуэй Я так не думаю, так как он все еще пропускает объявление функции. По той же причине я не могу поставить ее наверху, поскольку после нее объявляются фактические функции обработчика, или я буду иметь эту ошибку: 'NameError: name 'func_run' не определен' – Lin
Поместите его после объявлений функций и не сделайте сделайте проблему. – furas