基于类型的PyCharm中的自动补全

时间:2018-09-23 05:48:20

标签: python autocomplete pycharm

我正在使用PyCharm进行python编码。 PyCharm中的自动完成功能不如IntelliJ(Java)中的自动完成功能。考虑下面的代码

a = [1,2,3,4]
a.

在这种情况下,在我按下dot之后,PyCharm会提供完整的自动完成选项。考虑以下情况

def func_a(a):
    a.

在这里,我将func_a作为参数传递给函数list。但是,当我在dot之后按a时,PyCharm没有提供任何自动完成选项。我知道这是因为Python是动态类型化的语言,PyCharm不知道确定a是什么类型。

但是有没有办法告诉PyCharm a的类型,可能是在文档注释中或类似的东西?那么,PyCharm可以提供有效的自动完成选项吗?

3 个答案:

答案 0 :(得分:1)

是的,Python 3.5引入了类型提示,Pycharm则利用了这种类型。

使用

def func_name(param: type) -> return_type:

喜欢

def func_a(a: list):

请注意,所有类型提示都是完全可选的,并且被解释器忽略。但是,如果将Pycharm当作习惯来使用,可能会帮助您检测类型错误。

答案 1 :(得分:1)

这可能不会回答您的问题,但这对刚开始将pycharm用于Django应用程序的人很有用。

如果您使用 Pure Python 启动了项目,则

PyCharm不提供(它用红色强调了一些内置函数)自动完成选项。当您从文件菜单中单击新项目选项时,或者运行pycharm启动新项目时,会出现 Pure Python 选项。 纯Python 是新项目页面上的默认选定选项。您应该选择 Django (第二个选项),以在PyCharm中获得自动完成选项。

希望这对其他人有帮助。

答案 2 :(得分:0)

可以执行:(使用list的示例):

def func_a(a:list):
    do_this()

或手动检查:

def func_a(a):
    if isinstance(a,list):
        do_this
    else:

        raise TypeError("expected type of 'list' but got type of '%s'"%type(a).__name__)