Одинарные и двойные кавычки в 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? [закрыт]
Инициализация/декларация атрибутов в классе Python: где их размещать?
Следует ли добавлять запятую после последнего аргумента в вызове функции? [закрыто]
Как изменить порядок столбцов в DataFrame?
'pip' не распознан как командa внутреннего или внешнего формата