Как настроить программу на Python? - PullRequest
1 голос
/ 10 ноября 2011

Я написал программу на Python, которую я вызываю с аргументами из консоли. По мере роста функциональности объем кода, который теперь все вложен в один файл.

Я знаю, что есть модули и пакеты python, которые я мог бы создать для передачи на аутсорсинг функций, которые я написал. Но действительно ли это способ Python делать вещи?

Как будет выглядеть структура папок? Что-то вроде

prog
  __init__.py
  module1.py
  module2.py
prog.py

где prog (каталог или пакет python) и prog.py совместно используют один и тот же каталог?

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

Это довольно обычный цикл разработки - любой набор функций / методов, которые имеют общее назначение или относятся к общему набору данных, являются кандидатами для разделения на отдельные модули.Функции должны быть слабо связаны с остальной частью кода (обмениваться данными через аргументы вызова функций и возвращаемые значения, а не совместно используемые переменные), а процесс разделения их на отдельные модули облегчает идентификацию общих переменных, которые должны быть преобразованы в функциюинтерфейсы.Модульное программирование определенно Pythonic!

Вам не нужно создавать отдельную папку для своих модулей, просто дайте файлам .py значимые имена, которые относятся к их функциям.Я бы не назвал файл prog_lib.py, я бы назвал его prog_graphics.py, если бы он выполнял plots, spincalcs.py, если он делал вычисления для вращающихся объектов :-) и т. Д.

1 голос
/ 10 ноября 2011

Это хорошее решение, хотя ваши модули должны храниться в пакете , который не называется вашим основным модулем . Это может привести к конфликту между модулем и именем пакета.

Это может быть resources, lib или что-то еще, но, пожалуйста, не prog, так как у вас уже есть модуль с именем prog.py; иначе, как бы вы узнали результат import prog?

Примечание: из того, что я вижу в моей установке Python 2.6, со структурой и именами, которые вы предлагаете, вы не получаете сообщение об ошибке, но не можете получить доступ к prog.py содержимому.

...