【问题标题】:Autocompletion in PyCharm based on typePyCharm 中基于类型的自动补全
【发布时间】:2019-02-27 00:31:38
【问题描述】:

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

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

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

def func_a(a):
    a.

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

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

【问题讨论】:

  • 查看对应的PEP

标签: python autocomplete pycharm


【解决方案1】:

这可能无法回答您的问题,但这对刚开始使用 pycharm 进行 Django 应用程序的人会有所帮助。

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

PyCharm 不会为 Django 提供(它用红色强调了一些内置函数)auto-completion 选项。 Pure Python 选项在您单击文件菜单中的 new project 选项或运行 pycharm 启动新项目时出现。 Pure Python 是新项目页面上的默认选择选项。您应该选择 Django(第二个选项)来获取 PyCharm 中的 auto-completion 选项。

希望这对其他人有帮助。

【讨论】:

    【解决方案2】:

    可以做:(使用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__)        
    

    【讨论】:

    • 不过,第二部分没有回答我的问题。我的问题是不进行类型检查。我只需要根据传递给函数的参数类型在 PyCharm 中自动完成。
    【解决方案3】:

    是的,Python 3.5 引入了类型提示,Pycharm 使用了它。

    使用

    def func_name(param: type) -> return_type:
    

    喜欢

    def func_a(a: list):
    

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

    【讨论】:

    • 像 PyCharm 中的魅力一样工作:P。谢谢!有没有办法指定参数可以是列表或元组?
    • 检查this out。再次注意类型提示不是强制的。
    猜你喜欢
    • 2014-12-18
    • 2013-07-03
    • 2016-03-21
    • 2015-12-04
    • 1970-01-01
    • 2018-01-18
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多