Как указать несколько возвращаемых типов в строке документации функции в Python? - PullRequest
0 голосов
/ 06 февраля 2019

Мне известен синтаксис, используемый для создания строки документации для стиля Google, такой как:

def function_with_types_in_docstring(param1, param2):
    """Example function with types documented in the docstring.

    `PEP 484`_ type annotations are supported. If attribute, parameter, and
    return types are annotated according to `PEP 484`_, they do not need to be
    included in the docstring:

    Args:
        param1 (int): The first parameter.
        param2 (str): The second parameter.

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

    """

Однако, что если у меня есть функция, которая может возвращать несколько типов в зависимости от того, какая ветвь кода являетсяказнят?Как правильно документировать это?

Пример ниже.Что следует поместить в часть Returns?

def foo(x, y):
    """Dummy function.

    Args:
        x (int): integer
        y (int): integer

    Returns:
        list/dict: either list or a dict depending on...

    """
    if x > y:
        return [1, 2, 3]
    if x < y:
        return {1:2}

Существует пример , который показывает два различных возможных типа возврата:

def add2(a, b):
    """Add numbers or concatenate strings.

    Args:
      a (int/str): String or integer to be added
      b (int/str): String or integer to be added

    Returns:
      int/str: Result
    """
    pass

Однако яИнтересно, что было бы лучшим способом предоставить оба типа и описание, чтобы Наполеон поддерживал его нативно, и было бы легко читать документы.

Использование int/str: %description% - единственный способобрабатывать несколько типов возврата?

    Returns:
      int/str: integer if a > b and a string otherwise
...