Каков наилучший способ грамотного программирования на Python в Windows?[закрыто]
-
13-09-2019 - |
Вопрос
Я играл с различными способами грамотного программирования на Python.Мне нравится noweb
, но у меня есть две основные проблемы с этим:во-первых, сложно создавать на Windows, где я трачу примерно половину своего времени на разработку;и, во-вторых, это требует, чтобы я делал отступы в каждом фрагменте кода так, как это будет в окончательной программе, о чем я не обязательно знаю, когда пишу ее.Я не хочу использовать Leo, потому что я очень привязан к Emacs.
Есть ли хороший грамотный инструмент программирования, который:
- Работает в Windows
- Позволяет мне устанавливать отступы для фрагментов, когда они используются, а не когда они написаны
- Все еще позволяет мне работать в Emacs
Спасибо!
Исправление: noweb
делает позвольте мне сделать отступ позже - я неправильно прочитал бумагу, которую нашел на нем.
По умолчанию,
notangle
сохраняет пробелы и сохраняет отступ при развертывании фрагментов.Поэтому его можно использовать с такими языками, как Miranda и Haskell, в которых отступ является значительным
Это оставляет меня только с проблемой "Работает в Windows".
Решение
Я сделал это:
http://sourceforge.net/projects/pywebtool/
Вы можете приобрести любое количество продуктов web / weave, которые помогут вам создать документ и код одним махом.
Вы можете - довольно легко - написать свой собственный.Вытаскивать блоки кода Python из ПЕРВОГО исходного кода и собирать их - это не ракетостроение.Действительно, я предлагаю вам написать свои собственные директивы Docutils для сборки кода Python из ПЕРВОГО исходного документа.
Вы запускаете ПЕРВЫЙ через docutils rst2html (или Sphinx) для создания вашего окончательного HTML-отчета.
Вы запускаете свою собственную утилиту на том же ПЕРВОМ исходном коде для извлечения блоков кода Python и создания конечных модулей.
Другие советы
Я написал Pweave http://mpastell.com/pweave, который предназначен для динамической генерации отчетов и использует синтаксис noweb.Это чистый скрипт на python, поэтому он также работает в Windows.Это не устраняет вашу проблему с отступом, но, возможно, вы можете изменить ее для этого, код действительно довольно простой.
Стандартом де-факто в сообществе являются ноутбуки IPython.
Отличный пример, в котором Питер Норвиг демонстрирует алгоритмы для решения задачи Коммивояжера: http://nbviewer.ipython.org/url/norvig.com/ipython/TSPv3.ipynb
Дополнительные примеры, перечисленные на https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks
Вы могли бы использовать org-mode и babel-tangle.
Это работает довольно хорошо, так как вы можете указать :noweb-ref для исходных блоков.
Вот минимальный пример: Активировать org-babel-клубок, затем поместите это в файл noweb-test.org
:
#+begin_src python :exports none :noweb-ref c
abc = "abc"
#+end_src
#+begin_src python :noweb yes :tangle noweb-test.py
def x():
<<c>>
return abc
print(x())
#+end_src
Вы также можете использовать свойства заголовков для предоставления noweb-ref.Затем он может даже автоматически объединить несколько исходных блоков в одну ссылку noweb.
Добавить :results output
к тому #+begin_src
строку второго блока, чтобы увидеть результаты печати под этим блоком, когда вы нажмете C-c C-c
в квартале.
Вы могли бы найти новеб 3 проще создавать на Windows.Он был разработан, чтобы быть более портативным, чем стандартный noweb.
Смотрите также мой последний инструмент LP: http://code.google.com/p/nano-lp.Он не требует специального формата ввода, поддерживает Markdown / MultiMarkdown, reStructuredText, OpenOffice / LibreOffice, Creole, TeX / LaTeX и обладает сверхлегким и чистым синтаксисом - больше никаких программ с загадочной грамотностью.
Нашел этот инструмент полезным: https://github.com/bslatkin/pyliterate