Python 使用google样式的docstrings键入注释

Python 使用google样式的docstrings键入注释,python,Python,当使用谷歌风格的docstring和类型注释时,会出现双重类型提示 对于如何避免这种情况,社区是否有共识 恼人的双重类型: def sum(a: int, b: int) -> int: """ blah blah Args: a (int): value 1 b (int): value 2 Returns: int: summed values "&quo

当使用谷歌风格的docstring和类型注释时,会出现双重类型提示

对于如何避免这种情况,社区是否有共识

恼人的双重类型:

def sum(a: int, b: int) -> int:
    """ blah blah
    
    Args: 
        a (int): value 1
        b (int): value 2
    Returns:
        int: summed values
    """
    return a + b
应该像这样将类型从docstring中删除吗

def sum(a: int, b: int) -> int:
    """ blah blah
    
    Args: 
        a: value 1
        b: value 2
    Returns:
       summed values
    """
    return a + b

我没有看到其他人提到这一点,但我不是唯一一个不确定最佳方法的人。

这是非常重要的,但我认为如果您有合适的名称和类型注释,枚举docstring中的所有参数没有多大价值

def sum(a: int, b: int) -> int:
    """Returns the result of adding the inputs together."""
    return a + b
在现实生活中,有了这个具体的例子,我可能会:

def sum(a: int, b: int) -> int:
    """Does exactly what it says."""
    return a + b

由于参数是两个
int
s,结果是另一个
int
,函数名是
sum
,这是一个非常普通的英语单词,意思是“当你把其他东西加在一起时得到的东西”,我认为没有必要作进一步的解释(除了确认这不是一个技巧之外)。

是的,您只需要Args和Returns中的类型提示或注释,而不是两者都需要


参考资料

根据报告: “如果代码不包含相应的类型批注,则说明应包括所需的类型。”

斯芬克斯博士在其著作中也鼓励了这一点:


def function_with_pep484_type_annotations(param1: int, param2: str) -> bool:
    """Example function with PEP 484 type annotations.

    Args:
        param1: The first parameter.
        param2: The second parameter.

    Returns:
        The return value. True for success, False otherwise.

    """