In[1] : '\"""'
Out[1]: '"""'
In[2] : "\""""
Out[2]: '"'
В следующих примерах (в которых я использую python 3), почему изменение типа цитаты, используемой для заключения строки, изменяет фактическое значение строки? Я ожидал, что "\""""=='\"""' будет правдой, но это ложь. И почему второй пример возвращает только одинарные двойные кавычки? Спасибо!






Выражение "\"""" - это два строковых литерала, "\"" и "" (или '"' и '', переход на одинарные кавычки для ясности), соединенные вместе. Эквивалент '\"""' в двойных кавычках будет "\"\"\"".
>>> ("\""
... ""
... )
'"'
>>> "\"\"\""
'"""'
В [2] фактически две соседние строки, аналогичные "foo""bar".
"\"""" содержит первую строку "\"" и вторую строку "".
При оценке Python объединяет их:
In[1]: "foo""bar"
Out[1]: 'foobar'
В вашем случае, поскольку вторая строка пуста, вы просто получаете первую.
Python делает то же самое, что и C, с точки зрения конкатенации строк:
'hello' 'world' == 'helloworld'
То есть, если вы поместите два строковых литерала в кавычках рядом друг с другом и ничего между ними не будет, они будут объединены вместе. В этом разница между 1 и 2:
In[2] : "\"""" --> "\"" ""
Таким образом, ваш второй ввод фактически объединяет строку " с пустой строкой.
Одиночная кавычка может заканчиваться только другой одинарной кавычкой,
следовательно, '\" не является строкой, а затем python ждет, пока другой ' завершит строку
поэтому '\"""' - это одна строка, а "\"""" - две строки, "\"" и ""
тогда результаты будут """, потому что python должен принимать \""" в строковом объекте, тогда как другой - это просто "с пустой строкой, объединенной
Надеюсь, мой ответ ясен, это непросто объяснить всеми этими кавычками