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