用PyD在Eclipse中输入暗示

2024-06-10 12:23:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Python,在经历了很多PHP经验之后,在Python中使用类型hinting会很方便。看起来带有PyDev的Eclipse不支持这个。有什么建议吗?

例如,我希望IDE在使用时显示函数docstrings类型,例如:

def f(x: int) -> int:
    r"""Adds 3 to x"""
    return x + 3

f(# and now IDE shows everything about types 

Tags: to函数类型def经验ide建议经历
3条回答

截至2014年8月,Guido Van Rossum有一个proposal在函数定义中使用mypy语法注释类型,声明新语法实际上是有效的Python 3。他的提案中的一个例子(截至2014年9月,尚未成为政治公众人物)

from typing import List, Dict

def word_count(input: List[str]) -> Dict[str, int]:
    result = {}  #type: Dict[str, int]
    for line in input:
        for word in line.split():
            result[word] = result.get(word, 0) + 1
    return result

呈现Python 2/3

对于本地作用域变量和函数参数,PyDev有:

assert isinstance(obj, MyClass)
obj. # here hint will work

虽然我猜这是一个没有记录的功能。下面是PyDev的official page for type hints和几个演示Sphinx语法的摘录。

class Example:

  def param(self, a):
    ''':type a: MyClass'''

  def var(self, iterable):
    for a in iterable: #: :type a: AnotherClass
        pass

不幸的是,这两种方法都不适用于班级成员。

因为,PyDev 4也有类似于PEP-484的东西(见下文)。

class LatestExample:

  def listcase(self, param):
    ''':type param: list[str]'''

  def dictcase(self, param):
    ':type param: dict[str, MyClass]'

未来Python3

看看“slushy”的回答。毫无疑问,这是未来。但目前PyDev既不支持函数注释,PEP-3107,也不支持新的PEP-484stuff@slushy演示。PEP-484将在Python 3.5中以某种有限的形式出现,并最终在3.6中出现。下面是BDFL的PyCon 2015 presentation用于类型提示和PEP-484。

Python是一种动态类型语言,不需要声明变量类型。但是,您可以在docstrings中添加有关预期传递给函数的类型的信息,例如

def f(x):
    """
    @x: int
    Adds 3 to x
    returns an int
    """
    return x + 3

但在这种情况下,函数非常简单,在我看来不需要任何类型信息,在python中,只记录它所做的事情通常比记录严格的类型更可取。

pydev确实支持docstring(但不支持类型)完成并捕获许多错误,只要您将python文件作为项目的一部分打开,而不是通过将它们拖放到Eclipse中来分别打开它们。

您需要添加包含python文件的文件夹,方法是右键单击项目根目录,选择Properties菜单项并选择左侧列表中的PyDev - PYTHONPATH,然后单击Add source folder以添加包含python文件的所有文件夹。请注意,如果其中有一个__init__.py,pydev通常可以在任何子目录中找到模块,因此您通常只需要添加根python源文件夹。

然后,在输入ctrl+space之前键入(,访问工具提示,并在输入ctrl+space之后键入(,自动填充建议的函数参数。

另见pydev手册http://pydev.org/manual_101_root.html

相关问题 更多 >