Введите вывод подсказок в Eclipse с PyDev

Я изучаю Python после большого опыта PHP, и было бы удобно иметь вывод подсказок типа в Python. Похож на Eclipse с PyDev, не поддерживает это. Какие-либо предложения?

Например, я хочу, чтобы мой IDE показал функциональные docstrings и типы, когда я использую его, как:

def f(x: int) -> int:
    r"""Adds 3 to x"""
    return x + 3

f(# and now IDE shows everything about types 
19
задан nbro 9 September 2015 в 20:44
поделиться

2 ответа

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

def f(x):
    """
    @x: int
    Adds 3 to x
    returns an int
    """
    return x + 3

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

pydev поддерживает завершение строк документации (но не типов) и улавливает множество ошибок, если вы открываете файлы python как часть проекта, а не открываете их отдельно, перетаскивая их в Eclipse.

Вам необходимо добавить папки, содержащие файлы Python, щелкнув правой кнопкой мыши корень проекта, выбрав пункт меню Свойства и выбрав PyDev - PYTHONPATH в списке слева, и нажав Добавить исходную папку для всех папок с файлами Python. Обратите внимание, что pydev обычно может находить модули в любых подкаталогах, если в них есть __ init __. Py , поэтому вам часто нужно только добавить корневую исходную папку python.

После этого вы получаете доступ к подсказкам, набирая ctrl + пробел перед , набирая (, и автоматически заполняя предлагаемые аргументы функции, набирая ctrl + пробел после набрав (.

См. также руководство по pydev по адресу http://pydev.org/manual_101_root.html

13
ответ дан 30 November 2019 в 03:43
поделиться

Я не знаю ни о каких способах подсказки типов в Python.

Стандартная практика Python такова:

>>> def adds_three(number):
...     '''Returns number + 3'''
...     return number + 3
...     

Обратите внимание, что я сделал следующее:

  • Имя функции понятно для ее поведения
  • Имя аргумента ясно показывает, каким оно должно быть
  • docstring подробно описывает, что делает функция
  • Python - это язык с динамической типизацией. Зачем ограничивать пользователя вводом целых чисел? Плавающие точки также поддерживают оператор + . Пусть используют это.

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

1
ответ дан 30 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: