7

Одинарные и двойные кавычки в Python [закрыто]

1

Проблема заключается в том, что согласно документации, рассматриваемые термины в значительной степени взаимозаменяемы. Однако у меня возникает вопрос: существуют ли стилистические причины предпочитать один термин другому?

5 ответ(ов)

5

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

Например:

LIGHT_MESSAGES = {
    'English': "There are %(number_of_lights)s lights.",
    'Pirate':  "Arr! Thar be %(number_of_lights)s lights."
}

def lights_message(language, number_of_lights):
    """Возвращает строку, соответствующую языку, с количеством лампочек."""
    return LIGHT_MESSAGES[language] % locals()

def is_pirate(message):
    """Возвращает True, если данное сообщение звучит как пиратское."""
    return re.search(r"(?i)(arr|avast|yohoho)!", message) is not None
0

Ссылаясь на официальную документацию по адресу https://docs.python.org/2.0/ref/strings.html:

В простом английском: литералы строк могут быть заключены в подходящие одинарные кавычки (') или двойные кавычки (").

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

0

Я согласен с Уиллом:

  • Двойные кавычки для текста
  • Одинарные кавычки для всего, что ведет себя как идентификатор
  • Двойные кавычки для сырых строковых литералов, особенно для регулярных выражений
  • Тройные двойные кавычки для строк документации

Я буду придерживаться этого подхода, даже если это означает, что придется много экранировать.

Мне больше всего нравится, что идентификаторы в одинарных кавычках выделяются за счет кавычек. Остальные практики служат лишь для того, чтобы дать этим идентификаторам немного пространства.

0

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

Если ваш код будет читать кто-то, кто работает с C/C++ (или если вы переключаетесь между этими языками и Python), то использование '' для строк с одним знаком и "" для более длинных строк может помочь сделать переход более плавным. (Аналогично для других языков, где эти кавычки не взаимозаменяемы).

Что касается кода на Python, который я видел, то в целом предпочитаются двойные кавычки " по сравнению с одинарными ', но разница незначительная. Единственным исключением является то, что """эти""" встречаются значительно чаще, чем '''эти''', по моим наблюдениям.

0

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

Говоря о ненужной сложности, какой смысл упрощать ваши строковые литералы с помощью ' если вам придется использовать символы экранирования для представления апострофов? Разве это обижает программистов читать романы? Я не могу представить, как мучительно было для вас учиться на уроках английского в старшей школе!

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь