2015-03-12 1 views
3

В Python 2.7 я заметил, что поведение repr(s)s является строкой) отличается в зависимости от содержания s.Почему Python использует разные кавычки для представления строк в зависимости от их содержимого?

Вот что я имею в виду:

In [1]: print repr("John's brother") 
"John's brother" 

In [2]: print repr("system") 
'system' 

Обратите внимание на различные кавычки типа в обоих случаях.

Из моих тестов кажется, что всякий раз, когда s содержит ' символа, представленная строка указана с "если строка также не содержит (экранирование) " характера.

Вот пример того, что я имею в виду:

In [3]: print repr("foo") 
'foo' 

In [4]: print repr("foo'") 
"foo'" 

In [5]: print repr("foo'\"") 
'foo\'"' 

Теперь я понимаю, что это не имеет никакого значения, поскольку repr не может предложить никакой гарантии о формате точного вывода, но мне очень интересно, почему на Python разработчики решили такие вещи:

  • Почему существует два способа цитирования строк?
  • Зачем беспокоиться о конкретной логике для представления строк, содержащих кавычки? В конце концов, такие вещи, как doctests, сложнее писать.
+1

Python - это все, что позволяет разработчикам использовать его. Это так * так гораздо проще написать строку, которая имеет «попугай», я имею в виду цитаты «в них» или «« Просто используйте это », я сказал». И проще читать, чем '' \ "Просто используйте это \", я сказал "'. –

ответ

5

Python пытается дать наиболее «естественное» представление строки repr -ing.

Так, например, он будет использовать ", если строка содержит '"that's the ticket", потому что выглядит лучше, чем 'that\'s the ticket'.

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