Ответы:
Мне нравится использовать двойные кавычки вокруг строк, которые используются для интерполяции или сообщений естественного языка, и одинарные кавычки для маленьких символьных строк, но они нарушают правила, если строки содержат кавычки или если я забуду. Я использую тройные двойные кавычки для строк документации и необработанные строковые литералы для регулярных выражений, даже если они не нужны.
Например:
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
Цитирование официальных документов по адресу https://docs.python.org/2.0/ref/strings.html :
На простом английском языке: строковые литералы могут быть заключены в одинарные кавычки (') или двойные кавычки (").
Так что разницы нет. Вместо этого люди скажут вам выбрать любой стиль, который соответствует контексту, и быть последовательным . И я бы согласился - добавив, что бессмысленно пытаться придумать «условности» для такого рода вещей, потому что вы в конечном итоге только запутаете новичков.
Раньше я предпочитал '
, особенно для '''docstrings'''
, как я нахожу """this creates some fluff"""
. Кроме того, '
можно печатать без Shiftключа на моей швейцарской немецкой клавиатуре.
С тех пор я изменил использование тройных кавычек для """docstrings"""
соответствия PEP 257 .
"
требуется клавиша Shift только на QWERTY-клавиатуре ПК. На моей клавиатуре, "
на самом деле, легче набирать текст.
Я с Уиллом:
Я буду придерживаться этого, даже если это будет означать побег.
Я получаю наибольшее значение из одинарных кавычек, выделяющихся из-за кавычек. Остальные практики предназначены только для того, чтобы дать этим идентификаторам, заключенным в одинарные кавычки, некоторое место для стояния.
Если у вас есть одна строка, то вы должны использовать другую. Например "You're able to do this"
, или 'He said "Hi!"'
. Кроме этого, вы должны быть настолько последовательными, насколько это возможно (внутри модуля, внутри пакета, внутри проекта, внутри организации).
Если ваш код будут читать люди, работающие с C / C ++ (или если вы переключаетесь между этими языками и Python), то использование ''
односимвольных и ""
более длинных строк может помочь облегчить переход. (Аналогично для следующих других языков, где они не являются взаимозаменяемыми).
Код Python , я видел в дикой природе , как правило , в пользу "
более '
, но только немного. Единственным исключением является то, что они """these"""
встречаются гораздо чаще '''these'''
, чем я видел.
Тройной цитаты комментарии являются интересной подтемой этого вопроса. PEP 257 определяет тройные кавычки для строк документа . Я быстро проверил, используя Google Code Search, и обнаружил, что тройные двойные кавычки в Python примерно в 10 раз популярнее, чем тройные одинарные кавычки - 1,3 млн против 131 КБ в коде индексов Google. Так что в случае с несколькими строками ваш код, вероятно, станет более привычным для людей, если он использует тройные двойные кавычки.
"If you're going to use apostrophes,
^
you'll definitely want to use double quotes".
^
По этой простой причине я всегда использую двойные кавычки снаружи. Всегда
Говоря о пуху, что хорошего в том, чтобы упорядочить ваши строковые литералы с помощью «если вам придется использовать escape-символы для представления апострофов? Обижает ли кодеров читать романы? Я не могу представить, насколько болезненным для вас был урок английского языка в старшей школе!
Python использует кавычки примерно так:
mystringliteral1="this is a string with 'quotes'"
mystringliteral2='this is a string with "quotes"'
mystringliteral3="""this is a string with "quotes" and more 'quotes'"""
mystringliteral4='''this is a string with 'quotes' and more "quotes"'''
mystringliteral5='this is a string with \"quotes\"'
mystringliteral6='this is a string with \042quotes\042'
mystringliteral6='this is a string with \047quotes\047'
print mystringliteral1
print mystringliteral2
print mystringliteral3
print mystringliteral4
print mystringliteral5
print mystringliteral6
Что дает следующий вывод:
this is a string with 'quotes'
this is a string with "quotes"
this is a string with "quotes" and more 'quotes'
this is a string with 'quotes' and more "quotes"
this is a string with "quotes"
this is a string with 'quotes'
"""This is a string with "quotes""""
вызывает SyntaxError. Как можно решить эту ситуацию? (так же, как и с '''This is a string with 'quotes''''
)
'''This is a string with "quotes"'''
.
Я вообще использую двойные кавычки, но не по какой-то конкретной причине - вероятно, просто по привычке из Java.
Я предполагаю, что вы также скорее всего захотите апострофы в строковой литеральной строке, чем двойные кавычки.
Лично я придерживаюсь одного или другого. Это не важно А предоставление своего собственного смысла любой цитате просто запутывает других людей, когда вы сотрудничаете.
Это, вероятно, стилистическое предпочтение больше всего на свете. Я только что проверил PEP 8 и не увидел упоминаний об одинарных и двойных кавычках.
Я предпочитаю одинарные кавычки, потому что это только одно нажатие клавиши вместо двух. То есть мне не нужно нажимать клавишу Shift, чтобы сделать одинарную кавычку.
В Perl вы хотите использовать одинарные кавычки, когда у вас есть строка, которая не нуждается в интерполяции переменных или экранированных символов, таких как \ n, \ t, \ r и т. Д.
PHP делает то же различие, что и Perl: содержимое в одинарных кавычках не будет интерпретироваться (даже \ n не будет преобразовано), в отличие от двойных кавычек, которые могут содержать переменные, для которых выводится их значение.
Боюсь, Python нет. С технической точки зрения, в Python нет $ токена (или тому подобного) для отделения имени / текста от переменной. Обе функции делают Python более читабельным, в конце концов, менее запутанным. Одинарные и двойные кавычки могут использоваться взаимозаменяемо в Python.
r
перед строкой литерал. Так print 'a\nb'
что напечатает вам две строки, но print r'a\nb'
напечатает вам одну.
Я решил использовать двойные кавычки, потому что их легче увидеть.
Я просто использую то, что поражает мое воображение в то время; удобно переключаться между двумя прихотями!
Конечно, при цитировании цитат characetrs переключение между ними может быть не таким уж и причудливым в конце концов ...
Вкус вашей команды или правила кодирования вашего проекта.
Если вы находитесь в мультиязычной среде, вы можете поощрять использование кавычек того же типа для строк, которые использует другой язык, например. Иначе мне лично больше всего нравится внешний вид
Я стремлюсь минимизировать как пиксели, так и удивление. Я обычно предпочитаю '
минимизировать пиксели, но "
вместо этого, если строка имеет апостроф, снова минимизировать пиксели. Для строки документации, однако, я предпочитаю """
более , '''
потому что последний является нестандартным, необычным, и поэтому удивительно. Если сейчас у меня есть несколько строк, которые я использовал в "
соответствии с приведенной выше логикой, но также и та, которая может сойти с рук '
, я все равно могу использовать "
ее для сохранения согласованности, только чтобы минимизировать неожиданность.
Возможно, это помогает думать о философии минимизации пикселей следующим образом. Вы бы предпочли, чтобы английские символы выглядели A B C
или AA BB CC
? Последний выбор тратит 50% непустых пикселей.
'
знак равно "
/
= \
=\\
пример :
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
не являются действительными , как ускользает \t
или \n
или \\
или\"
Если вы хотите использовать одиночные обратные слеши (и интерпретировать их как таковые), вам нужно использовать «необработанную» строку. Вы можете сделать это, поставив ' r
' перед строкой
im_raw = r'c:\temp.txt'
non_raw = 'c:\\temp.txt'
another_way = 'c:/temp.txt'
Что касается путей в Windows, косые черты интерпретируются одинаково. Очевидно, что сама строка отличается. Я не гарантирую, что они обрабатываются таким образом на внешнем устройстве.
os.path.join()