Python комментарий в документации - PullRequest
0 голосов
/ 02 ноября 2018

Я узнал об этом, потому что некоторые из заданных мною домашних заданий были проверены строкой документации, и это вызывает у меня сбои.

Например:

def foo(x):
    """
    >>> foo(5)
    25
    >>> foo(6)
    36  # Are you sure?
    """
    return x**2

if __name__ == '__main__':
    import doctest
    doctest.testmod(verbose=True)

Приведенный выше пример завершается с:

Expected:
    36  # are you sure?
Got:
    36

Интересно, не должны ли мы добавить комментарий в строку документации? Или есть способ заставить python игнорировать комментарий в docstring?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Doctest работает путем захвата стандартного вывода из командной строки. Текст, предоставленный в тестовой строке, должен точно соответствовать вашему выводу. Doctest не может узнать, какой тип данных вы выводите: он может сравнивать только текстовые данные. В вашем случае это целое число, за которым следует комментарий, но что делать, если вместо этого вы сделали следующее:

>>> print('36   # are you sure?')

Любые комментарии, которые вы хотите получить, должны быть в исполняемых строках:

>>> foo(6)  # are you sure?
36

Возможно, это не так визуально привлекательно, но служит почти той же цели и фактически работает. Когда строка с комментарием передается переводчику, комментарий обрабатывается правильно.

0 голосов
/ 02 ноября 2018

Вы можете просто добавить свои комментарии, как показано ниже

>>> # comments are ignored

Ссылка https://docs.python.org/3/library/doctest.html

Примечание: это не должно быть частью вывода, поэтому, если вы хотите добавить комментарий, вы можете использовать новую строку, чтобы написать свой комментарий. Поэтому в вашем случае строка «36» не должна содержать никаких других строк, кроме выходных.

...