Я изучаю 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
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
Я не знаю ни о каких способах подсказки типов в Python.
Стандартная практика Python такова:
>>> def adds_three(number):
... '''Returns number + 3'''
... return number + 3
...
Обратите внимание, что я сделал следующее:
+
. Пусть используют это. Одним из преимуществ динамической типизации является то, что все методы наследственно перегружены. Конечно, вы всегда можете выполнить проверку типов в функции, чтобы предотвратить фатальные ошибки.