Одинарные и двойные кавычки в Python [закрыто]
Проблема заключается в том, что согласно документации, рассматриваемые термины в значительной степени взаимозаменяемы. Однако у меня возникает вопрос: существуют ли стилистические причины предпочитать один термин другому?
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
Ссылаясь на официальную документацию по адресу https://docs.python.org/2.0/ref/strings.html:
В простом английском: литералы строк могут быть заключены в подходящие одинарные кавычки (') или двойные кавычки (").
Таким образом, разницы нет. Вместо этого, люди обычно рекомендуют выбирать тот стиль, который соответствует контексту, и придерживаться его последовательно. Я бы согласился с этим, добавив, что бессмысленно пытаться выработать "конвенции" по этому поводу, так как в итоге вы только запутаете новичков.
Я согласен с Уиллом:
- Двойные кавычки для текста
- Одинарные кавычки для всего, что ведет себя как идентификатор
- Двойные кавычки для сырых строковых литералов, особенно для регулярных выражений
- Тройные двойные кавычки для строк документации
Я буду придерживаться этого подхода, даже если это означает, что придется много экранировать.
Мне больше всего нравится, что идентификаторы в одинарных кавычках выделяются за счет кавычек. Остальные практики служат лишь для того, чтобы дать этим идентификаторам немного пространства.
Если в вашей строке уже используется один вид кавычек, то рекомендуется использовать другой. Например, "Вы можете сделать это"
или 'Он сказал "Привет!"'
. В остальном старайтесь придерживаться последовательности (в пределах модуля, пакета, проекта или организации).
Если ваш код будет читать кто-то, кто работает с C/C++ (или если вы переключаетесь между этими языками и Python), то использование ''
для строк с одним знаком и ""
для более длинных строк может помочь сделать переход более плавным. (Аналогично для других языков, где эти кавычки не взаимозаменяемы).
Что касается кода на Python, который я видел, то в целом предпочитаются двойные кавычки "
по сравнению с одинарными '
, но разница незначительная. Единственным исключением является то, что """эти"""
встречаются значительно чаще, чем '''эти'''
, по моим наблюдениям.
Если вы собираетесь использовать апострофы, то вам определенно стоит использовать двойные кавычки снаружи. Всегда.
Говоря о ненужной сложности, какой смысл упрощать ваши строковые литералы с помощью ' если вам придется использовать символы экранирования для представления апострофов? Разве это обижает программистов читать романы? Я не могу представить, как мучительно было для вас учиться на уроках английского в старшей школе!
Какие самые распространенные форматы docstring в Python? [закрыт]
Как клонировать список, чтобы он не изменялся неожиданно после присваивания?
Преобразование списка словарей в DataFrame pandas
Как отсортировать список/кортеж списков/кортежей по элементу на заданном индексе
Как отменить последнюю миграцию?