Автозаполнение в динамических языковых средах разработки, в частности Python в PyDev - PullRequest
4 голосов
/ 14 августа 2010

Я новичок в Python, имею опыт работы со статически типизированными языками, включая множество Java.

Я выбрал PyDev в Eclipse как IDE после проверки функций / популярности и т. Д.

Я был ошеломлен тем, что автозаполнение не работает должным образом для встроенных функций. Например, если я пытаюсь выполнить автозаполнение для файла данных после:

datafile = open (каталог + "/" + учетная запись, 'r') файл данных.

Никаких полезных методов не предлагается (например, realines). Только такие вещи, как звоните .

Я привык изучать язык, перепрыгивая через определения классов и используя множество автозаполнений для быстрого просмотра того, что будет делать класс. Мой «интерпретатор» PyDev настроен на «принудительную сборку».

Можно ли получить автозаполнение для встроенных функций с помощью PyDev? Неправильно ли я подхожу к IDE, то есть должен ли работать боковой переводчик и тестировать его? До сих пор IDE казались слабыми, например IDLE segfaults на моем новом Mac через 2 минуты. Я хотел бы знать, что делают опытные разработчики Python при изучении незнакомых (встроенных) модулей, так как это заставляет меня пересмотреть свою первоначальную привлекательность для Python. Мне нравится язык, который вы можете выучить с помощью простого изучения!

Спасибо

Ответы [ 7 ]

8 голосов
/ 14 августа 2010

По моему мнению, оболочка Python является гораздо лучшим местом для изучения новых модулей, чем полагаться на IDE. Не забывайте, что в Python вы можете делать в оболочке все, что можете в программе, потому что нет отдельного шага компиляции. А в оболочке вы можете использовать dir(x), чтобы найти все свойства и методы x, независимо от того, является ли x модулем, классом или чем-то еще.

Еще лучше, улучшенная оболочка iPython обеспечивает завершение табуляции для всех объектов.

Фактически из-за этого многие программисты на Python - включая меня - вообще не используют IDE, а просто простой текстовый редактор (я использую VIM).

4 голосов
/ 24 февраля 2012

Просто чтобы держать его в курсе, чтобы новые читатели не смущались текущим состоянием Pydev - пример, который вы привели, теперь работает в Pydev.(кстати, следует избегать ручного управления путями - используйте вместо него os.path.join)

1 голос
/ 14 августа 2010

Мне бы хотелось узнать, что делают опытные разработчики Python при изучении незнакомых (встроенных) модулей

Я использую ipython .Ipython - это расширенная версия интерактивной оболочки, которая добавляет завершение табуляции и быстрый доступ к строке объекта.Он также предоставляет множество других функций, которых нет в стандартной оболочке - вы можете найти краткую информацию о его функциях здесь .

0 голосов
/ 14 августа 2010

Я использую PyDev на работе, поэтому я знаю, откуда ты. Если вы готовы рассмотреть другие инструменты, взгляните на JetBrains 'PyCharm , это моя новая предпочтительная Python IDE для моих собственных проектов. Не о какой принадлежности говорить, кроме как сказать, что я заберу ее, когда она выйдет из бета-версии. :)

0 голосов
/ 14 августа 2010

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

Если он не может определить тип, вы можете использовать assert, например

assert isinstance(datafile, file)

, чтобы помочь автозаполнению

0 голосов
/ 14 августа 2010

Вы хотите IPython .Как указывал Дэниел выше, интерактивная оболочка - это гораздо лучший способ изучения Python (да и вообще большинства других языков).

Этот может помочь с настройкой в ​​OSX.

0 голосов
/ 14 августа 2010

Кто-то более знающий здесь может дать вам подробный ответ.Вот короткий.

Автозаполнение для динамически типизированного языка по своей природе не может быть таким богатым, как для статически типизированного языка.Например, в случае open нет способа выяснить, какой будет тип возвращаемого значения во время написания кода.Сигнатура метода не включает возвращаемый тип в отличие от статически типизированного языка, такого как Java.Следовательно, IDE не может дать вам никаких подсказок.

У вас наверняка должен быть запущен REPL во время любой разработки Python.Одним из преимуществ интерпретируемого языка является то, что вы можете тестировать небольшие фрагменты кода на REPL по мере продвижения.Это также хорошее место для проверки вашего понимания того, как работают встроенные модули и другие модули.

Я работаю в Ubuntu, поэтому не знаю, насколько легко или сложно запустить IDLE на Mac.Я обычно работаю с очень удобным iPython для нужд REPL и использую Pydev для других разработок (таких как Django).Возможно, вы захотите попробовать iPython.

...