Интегрированная среда разработки python с завершением кода, включая вывод типа параметр-объект
Я протестировал множество Python IDE для их возможностей завершения кода. Существует ли тот, который может выполнить завершение кода в следующем случае:
def foo(x):
print x.read() // remove this line, and type in "print x."
def main():
n = open("c:\python27\test.py");
foo(n)
IDE должна вычислить, что foo вызывается где-то в текущем модуле с параметром, который был возвращаемым значением из вызова open (), который он должен был бы считать вызовом file.open
, и, таким образом, возвращает объект file. Таким образом, x.
, за которым следует Ctrl+пробел, вызовет завершение кода и покажет, что x, как объект файла, может поддерживает любой метод объекта file, включая read()
.
Я обнаружил, что PyScripter, например, может делать это:
n = open("c:\python27\test.py");
n. // hit <ctrl+space> after n.
Приведенный выше сценарий завершения кода работает, потому что PyScripter выполняет некоторую специальную логику завершения кода, чтобы определить, что n является файловым объектом, но, похоже, нет способа вывести типы объектов или доступные методы из статического анализа, которые выведут типы параметров.
Во-вторых, если ничего подобного нет в Python 2.x, в Python 3.x, теперь, когда есть подсказки статического типа, поддерживает ли их какая-либо IDE?
def foo(x:'file'):
print x.read() // remove this line, and type in "print x." and hit ctrl+space
2 ответа:
Единственное, что я думаю, может сделать (почти), это PyCharm
Но вы должны дать ему некоторые подсказки:
Если вы используете Python 3, IDE будет проверять аннотации функций следующим образом:
(класс file был удален из python 3, поэтому я сделал пример со строкой)
Это не бесплатная IDE, но, IMHO имеет лучшее доступное завершение кода.