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

718
задан Readonly 11 September 2008 в 08:18
поделиться

16 ответов

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

, Например:

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 a language-appropriate string reporting the light count."""
    return LIGHT_MESSAGES[language] % locals()

def is_pirate(message):
    """Return True if the given message sounds piratical."""
    return re.search(r"(?i)(arr|avast|yohoho)!", message) is not None
525
ответ дан Will Harris 11 September 2008 в 08:18
поделиться

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

0
ответ дан Mario F 11 September 2008 в 08:18
поделиться

Вкус Вашей команды или инструкции по кодированию Вашего проекта.

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

0
ответ дан Vinko Vrsalovic 11 September 2008 в 08:18
поделиться

Это - вероятно, стилистическое предпочтение больше, чем что-нибудь. Я просто проверил PEP 8 и не видел упоминания о сингле по сравнению с двойными кавычками.

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

2
ответ дан Mike 11 September 2008 в 08:18
поделиться

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

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

3
ответ дан Matt Sheppard 11 September 2008 в 08:18
поделиться

Если строка, которую Вы имеете, содержит один, то необходимо использовать другой. Например, "You're able to do this", или 'He said "Hi!"'. Кроме этого, необходимо просто быть столь последовательными, как Вы можете (в модуле, в пакете, в рамках проекта, в организации).

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

код Python, который я видел в дикой природе, имеет тенденцию способствовать " [более чем 115], но незначительно. Одно исключение - то, что """these""" намного более распространены, чем '''these''', от того, что я видел.

26
ответ дан Tadeck 11 September 2008 в 08:18
поделиться

Я с Желанием:

  • Двойные кавычки для текста
  • Одинарные кавычки для чего-либо, что ведет себя как идентификатор
  • Двойные заключенные в кавычки необработанные строковые литералы для regexps
  • Утроенные двойные кавычки для docstrings

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

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

44
ответ дан Garth Kidd 11 September 2008 в 08:18
поделиться

Я раньше предпочитал ', специально для '''docstrings''', поскольку я нахожу """this creates some fluff""". Кроме того, ' может быть введен без , Сдвиг включает мою швейцарскую немецкую клавиатуру.

я с тех пор изменился на использование тройных кавычек для """docstrings""", для приспосабливания PEP 257.

90
ответ дан Martijn Pieters 11 September 2008 в 08:18
поделиться

Заключение в кавычки официальных документов в https://docs.python.org/2.0/ref/strings.html :

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

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

96
ответ дан peko 11 September 2008 в 08:18
поделиться

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

3
ответ дан schwa 11 September 2008 в 08:18
поделиться

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

1
ответ дан Andrew Dalke 11 September 2008 в 19:18
поделиться

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

Конечно, при цитировании символов в кавычках переключение между ними может быть не таким уж прихотливым ...

1
ответ дан 22 November 2019 в 21:33
поделиться

Комментарии, заключенные в тройные кавычки, представляют собой интересную подтему этого вопроса. PEP 257 определяет тройные кавычки для строк документов . Я провел быструю проверку с помощью Google Code Search и обнаружил, что тройные двойные кавычки в Python примерно в 10 раз популярнее, чем тройные одинарные кавычки - 1,3 миллиона вхождений в коде против 131 000 в индексах Google . Так что в многострочном случае ваш код, вероятно, станет более знакомым людям, если в нем используются тройные двойные кавычки.

21
ответ дан 22 November 2019 в 21:33
поделиться

' = "

/ = \ = \\

пример:

f = open('c:\word.txt', 'r')
f = open("c:\word.txt", "r")
f = open("c:/word.txt", "r")
f = open("c:\\\word.txt", "r")

Результаты те же

=>> нет, они не одинаковые. Одиночный обратный слеш будет экранировать символы. Вам просто повезло в этом примере, потому что \k и \w не являются действительными escapes типа \t или \n или \\ или \"

Если вы хотите использовать одинарный обратный слеш (и интерпретировать его как таковой), тогда вам нужно использовать "сырую" строку. Вы можете сделать это, поместив 'r'' перед строкой

im_raw = r'c:\temp.txt'
non_raw = 'c:\\temp.txt'
another_way = 'c:/temp.txt'

Что касается путей в Windows, прямые косые черты интерпретируются таким же образом. Очевидно, что сама строка отличается. Однако я не гарантирую, что они обрабатываются таким же образом на внешнем устройстве.

-4
ответ дан 22 November 2019 в 21:33
поделиться

Я использую двойные кавычки, потому что я делал это в течение многих лет на большинстве языков (C ++, Java, VB ...), кроме Bash, потому что я также использую двойные кавычки в обычном тексте и потому что я с использованием (модифицированной) неанглийской клавиатуры, где для обоих символов требуется клавиша Shift.

-1
ответ дан 22 November 2019 в 21:33
поделиться

В Perl вы хотите использовать одинарные кавычки, когда у вас есть строка, которая не нуждается в интерполяции переменных или экранированных символов, таких как \n, \t, \r и т.д.

PHP делает такое же различие, как и Perl: содержимое в одинарных кавычках не будет интерпретироваться (даже \n не будет преобразован), в отличие от двойных кавычек, которые могут содержать переменные, чтобы их значение было выведено.

Python, к сожалению, этого не делает. С технической точки зрения, в Python нет маркера $ (или подобного) для отделения имени/текста от переменной. Обе особенности делают Python более читабельным, менее запутанным, в конце концов. Одинарные и двойные кавычки могут использоваться в Python взаимозаменяемо.

2
ответ дан 22 November 2019 в 21:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: