是否有一个python IDE,当你将鼠标悬停在它上面时会告诉你变量的类型?

时间:2011-05-30 20:04:53

标签: python eclipse vim emacs ide

有时我会写项目,直到几个月后才回复。对我来说不幸的是我忘记了要传递给函数的内容。我希望能够将鼠标悬停在一个参数上,并查看整数,字符串,某些类等类型。是否有一个IDE可以为我做这个?任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:8)

无法正常推断类型,因此没有IDE可以执行此操作。为什么不直接使用docstrings?

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

答案 1 :(得分:3)

在Python中,如果不实际运行代码并查看它们最终引用的内容,则无法一般性地推断变量的类型。即便如此,许多Python代码也适用于许多不同的类型,因此确实没有真正独特的变量类型。

例如,any内置函数迭代其参数,如果其任何元素为真,则返回True。听起来像从bool列表到bool的函数?错误。它所需要的只是可以迭代的东西。这包括列表,元组,字典,集合,生成器和更多内置类型,更不用说实现迭代器协议的用户定义类。所以你甚至无法推断出因为any被称为某个列表的东西。并且任何python值(我相信)都可以在布尔上下文中被评估为true / false,因此序列的内容甚至不必是bool。

大多数代码都没有使用Python的完整“动态”,只能在每个变量中放置单个类型的值。因此,从理论上讲,您可以使用某些注释和启发式方法在某些时候进行类型推断。我不知道有任何IDE试图这样做,我不相信它实际上是实用的。

从根本上说,您需要有关应该调用函数/类的方式以及它们返回的类型的文档。如果您缺乏这方面的知识,那么无论您是否有类型信息,都会犯错误。

答案 2 :(得分:1)

PyCharm中,您可以按住CTRL并指向标识符以查看其推断类型。 PyCharm可以从赋值和返回值推断出许多类型,也可以从docstrings和python3函数注释中推断出参数和返回类型。