Есть ли Python IDE, которая сообщит вам тип переменной при наведении на нее курсора? - PullRequest
5 голосов
/ 31 мая 2011

Иногда я пишу проекты и не возвращаюсь к ним до нескольких месяцев спустя.К сожалению для меня, я забываю, что должно было быть передано в функцию.Я хотел бы иметь возможность навести курсор на аргумент и увидеть тип, такой как целое число, строка, некоторый класс и т. Д. Есть ли IDE, которая сделает это для меня?Любая помощь приветствуется.

Ответы [ 3 ]

8 голосов
/ 31 мая 2011

Нет способа вывести тип как обычно, поэтому никакая IDE не сможет это сделать. Почему бы просто не использовать строки документации?

def foo(a, b):
    """
    Take your arguments back, I don't want them!

    a -- int
    b -- str
    """

    return a, b

В Python 3 вы также можете воспользоваться аннотациями функций:

def foo(a: int, b: str):
    """Take your arguments back, I don't want them!"""

    return a, b
3 голосов
/ 31 мая 2011

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

Например, встроенная функция any перебирает свой аргумент и возвращает True, если какой-либо из ее элементов имеет значение true. Звучит как функция из списка bool to bool? Неправильно. Все, что ему нужно - это то, что можно повторить. Это включает списки, кортежи, словари, наборы, генераторы и другие встроенные типы, не говоря уже о пользовательских классах, которые реализуют протокол итератора. Таким образом, вы даже не можете сделать вывод, что any вызывается для чего-то, что это список. И любое значение python (я полагаю) может быть оценено как true / false в логическом контексте, поэтому содержимое последовательности даже не должно быть bools.

Большая часть кода не использует полный «динамизм» Python, и ожидается, что в каждую переменную будут помещены только значения одного типа. Таким образом, теоретически, вы можете использовать некоторые аннотации и эвристику, чтобы делать вывод типа в течение некоторого времени. Я не знаю ни одной IDE, которая пыталась это сделать, и я не верю, что это на самом деле практично.

По сути, вам нужна документация о том, как должны вызываться ваши функции / классы, и что они возвращают. Если вам не хватает этих знаний, вы будете совершать ошибки независимо от того, есть у вас информация о типе или нет.

1 голос
/ 15 января 2012

В PyCharm вы можете удерживать CTRL и указывать на идентификатор, чтобы увидеть его предполагаемый тип. PyCharm может выводить многие типы из присваиваний и возвращаемых значений, а также выводить аргументы и возвращаемые типы из строк документации и аннотаций функций python3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...