Какая разница в строках документации с тройными ОДИНАРНЫМИ кавычками и тройными ДВОЙНЫМИ кавычками?

Мне просто интересно, в чем разница между двумя способами написания строк документации Python (__doc__):

  1. три одинарных кавычки:

    '''
    Comment goes here
    '''  
    
  2. три двойные кавычки:

    """
    Comment goes here
    """
    

Есть ли тонкая разница в том, как строка документа может быть отформатирована позже при создании документов?


person prashu    schedule 26.10.2012    source источник
comment
Примечание. Строка документа — это всего лишь нормальный строковый литерал с точки зрения синтаксиса/парсера Python. Применяются те же правила для """, ''', " и '.   -  person    schedule 26.10.2012


Ответы (3)


Нет. Они одинаковые. Единственное отличие состоит в том, что первый может содержать последовательность из трех неэкранированных двойных кавычек, а второй может содержать последовательность из трех неэкранированных одинарных кавычек. (Другими словами, поскольку разделители разные, есть небольшая разница в том, какие символы вы можете использовать внутри них.)

Строки документации — это обычные строки, и в Python нет разницы между различными разделителями строк, за исключением того, что вы, конечно, не можете использовать разделитель строк внутри строки.

person BrenBarn    schedule 26.10.2012
comment
Вы сказали: вы не можете использовать разделитель строк внутри строки, но я проверил его в python3: foo = """abc"def""", который преуспел, и foo имеет значение: 'abc"def'. Также интересно: foo = """abc"'def""" также легально производит: 'abc"\'def'. - person Eric Leschinski; 14.01.2016
comment
@EricLeschinski: В этом случае разделителем строк будет """ (т. е. три двойных кавычки), а не ". - person BrenBarn; 14.01.2016

В информационном документе PEP 257 -- Соглашения о строках документации рекомендуется использовать """triple double-quotes""" для согласованности, и все их примеры показывают одно и то же:

Для согласованности всегда используйте """triple double quotes""" вокруг строк документации. Используйте r"""raw triple double quotes""", если вы используете обратную косую черту в своих строках документации. Для строк документации Unicode используйте u"""Unicode triple-quoted strings""".

Использование одинарных или двойных кавычек на практике является чисто стилистическим вопросом. При создании и публикации документов из этих строк разницы в форматировании не будет.

person wim    schedule 26.10.2012

Выберите любой стиль, который вы хотите. Лично я использую одинарные кавычки везде в Python.

В документации говорится:

"String literals can be enclosed in matching single quotes (') or double quotes (")."

Неважно, какой из них вы решите использовать. Важно, чтобы вы придерживались своего решения. Это хорошая практика, чтобы выбрать стиль и придерживаться его.

person Aesthete    schedule 26.10.2012
comment
Спасибо @Aestete. Но мне особенно интересно понять это для doc_strings (doc) для функций и классов. - person prashu; 26.10.2012
comment
@prashu Строка документа - это просто .. строка. Это просто соглашение (возможно, указано где-то в PEP?) использовать кавычки """ или ''', как правило, чтобы сделать жизнь проще или более последовательной или продолжить традицию ... и вполне возможно, что некоторые плохо написанные инструменты проверки кода требуют этого (но это сломанные инструменты). Однако применяются точно такие же правила для строковых литералов — попробуйте! - person ; 26.10.2012
comment
Строка — это строка, это строка — это строка в Python. - person Aesthete; 26.10.2012