Lubię używać podwójnych cudzysłowów wokół ciągów używanych do interpolacji lub komunikatów w języku naturalnym oraz pojedynczych cudzysłowów dla małych ciągów podobnych do symboli, ale złamie zasady, jeśli ciągi zawierają cudzysłowy lub jeśli zapomnę. Używam potrójnych podwójnych cudzysłowów dla dokumentów i surowych literałów łańcuchowych dla wyrażeń regularnych, nawet jeśli nie są one potrzebne.
Na przykład:
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
Cytując oficjalne dokumenty na https://docs.python.org/2.0/ref/strings.html :
Więc nie ma różnicy. Zamiast tego ludzie powiedzą ci, aby wybrać styl pasujący do kontekstu i zachować spójność . I zgodziłbym się - dodając, że nie ma sensu wymyślać „konwencji” dla tego rodzaju rzeczy, ponieważ tylko wprowadzisz zamieszanie w nowych przybyszach.
źródło
Wolałem
'
, szczególnie'''docstrings'''
, jak się przekonałem"""this creates some fluff"""
. Ponadto'
można pisać bez Shiftklawisza na mojej szwajcarskiej niemieckiej klawiaturze.Od tego czasu zmieniłem się na stosowanie potrójnych cudzysłowów dla
"""docstrings"""
, aby dostosować się do PEP 257 .źródło
"
wymaga klawisza Shift tylko na klawiaturze komputera QWERTY. Na mojej klawiaturze"
łatwiej jest pisać.Jestem z Willem:
Pozostanę przy tym, nawet jeśli to oznacza dużo ucieczki.
Największą wartość czerpię z identyfikatorów pojedynczych cytatów wyróżniających się ze względu na cytaty. Reszta praktyk ma na celu zapewnienie tym stojącym pojedynczym identyfikatorom trochę miejsca na stojąco.
źródło
Jeśli ciąg, który masz zawiera jeden, powinieneś użyć drugiego. Na przykład
"You're able to do this"
, lub'He said "Hi!"'
. Poza tym powinieneś być tak spójny, jak tylko możesz (w module, w pakiecie, w projekcie, w organizacji).Jeśli twój kod będzie czytany przez osoby pracujące z C / C ++ (lub jeśli przełączysz się między tymi językami a Pythonem), to użycie
''
ciągów jednoznakowych i""
dłuższych może ułatwić przejście. (Podobnie w przypadku innych języków, w których nie są one wymienne).Kod Python widziałem w naturze ma tendencję do faworyzowania
"
nad'
, ale tylko nieznacznie. Jedynym wyjątkiem jest to, że"""these"""
są znacznie częstsze niż'''these'''
z tego, co widziałem.źródło
Ciekawe podtemat tego pytania stanowią trzy cytowane komentarze. PEP 257 określa potrójne cudzysłowy dla ciągów dokumentów . Zrobiłem szybkie sprawdzenie za pomocą Google Code Search i odkryłem, że potrójne podwójne cudzysłowy są w Pythonie około 10 razy bardziej popularne niż potrójne pojedyncze cudzysłowy - 1,3 mln w porównaniu z 131 000 wystąpień w indeksach Google kodu. Więc w przypadku wielu linii twój kod prawdopodobnie będzie bardziej znany ludziom, jeśli użyje potrójnych podwójnych cudzysłowów.
źródło
Z tego prostego powodu zawsze używam podwójnych cudzysłowów na zewnątrz. Zawsze
Skoro mowa o puchu, co dobrego jest w usprawnianiu literałów łańcuchowych słowem „jeśli będziesz musiał użyć znaków specjalnych do reprezentowania apostrofów? Czy obraża programistów czytających powieści? Nie wyobrażam sobie, jak bolesna była dla ciebie klasa angielskiego w liceum!
źródło
Python używa cudzysłowów mniej więcej tak:
Co daje następujące dane wyjściowe:
źródło
"""This is a string with "quotes""""
podnosi błąd SyntaxError. Jak można rozwiązać tę sytuację? (tak samo jak z'''This is a string with 'quotes''''
)'''This is a string with "quotes"'''
.Używam podwójnych cudzysłowów, ale nie z żadnego konkretnego powodu - prawdopodobnie po prostu z przyzwyczajenia z Javy.
Wydaje mi się, że bardziej prawdopodobne jest, że będziesz chciał apostrofów w dosłownym ciągu literalnym niż podwójnych cudzysłowów.
źródło
Osobiście trzymam się jednego lub drugiego. To nie ma znaczenia Podanie własnego znaczenia któregoś z cytatów jest po prostu mylące innych ludzi podczas współpracy.
źródło
To chyba stylistyczna preferencja bardziej niż cokolwiek innego. Właśnie sprawdziłem PEP 8 i nie widziałem żadnej wzmianki o pojedynczych i podwójnych cudzysłowach.
Wolę pojedyncze cudzysłowy, ponieważ jest to tylko jedno naciśnięcie klawisza zamiast dwóch. Oznacza to, że nie muszę zaciskać klawisza Shift, aby utworzyć pojedynczy cytat.
źródło
PHP robi to samo rozróżnienie, co Perl: treść w pojedynczych cudzysłowach nie będzie interpretowana (nawet \ n nie zostanie przekonwertowana), w przeciwieństwie do podwójnych cudzysłowów, które mogą zawierać zmienne w celu wydrukowania ich wartości.
Obawiam się, że Python nie. Technicznie rzecz biorąc, nie ma $ token (lub podobnego), aby oddzielić nazwę / tekst od zmiennej w Pythonie. Obie funkcje sprawiają, że Python jest bardziej czytelny, w końcu mniej mylący. Pojedyncze i podwójne cudzysłowy mogą być używane zamiennie w Pythonie.
źródło
r
przed literałem łańcucha. Więcprint 'a\nb'
wypisze ci dwie linie, aleprint r'a\nb'
pozwoli Ci wydrukować jeden.Wybrałem podwójne cudzysłowy, ponieważ są łatwiejsze do zobaczenia.
źródło
Po prostu używam tego, co mi się wtedy podoba; wygodnie jest móc przełączać się między nimi jednym kaprysem!
Oczywiście, cytując bohaterów cytatów, przełączanie się między nimi może nie być wcale takie kapryśne ...
źródło
Smak twojego zespołu lub wytyczne kodowania twojego projektu.
Jeśli pracujesz w środowisku wielojęzycznym, możesz zachęcić do korzystania z tego samego rodzaju cudzysłowów dla ciągów znaków, na przykład w innym języku. W przeciwnym razie osobiście najbardziej lubię wygląd „
źródło
Żadne, o ile mi wiadomo. Chociaż, jeśli spojrzysz na jakiś kod, „” jest zwykle używane w przypadku ciągów tekstowych (chyba „częściej występuje w tekście niż”), a „” pojawia się w hashkeys i podobnych rzeczach.
źródło
Staram się zminimalizować oba piksele i zaskoczyć. Zazwyczaj wolę
'
, aby zminimalizować piksele, ale"
zamiast tego, jeśli ciąg ma apostrof, ponownie, aby zminimalizować piksele. Dla docstring jednak wolą"""
na'''
ponieważ ten ostatni nie jest standardem, rzadkie i dlatego zaskakujące. Jeśli teraz mam kilka ciągów znaków, których użyłem"
zgodnie z powyższą logiką, ale także taki, który może uciec od'
, mogę nadal używać"
go w celu zachowania spójności, tylko w celu zminimalizowania zaskoczenia.Być może pomaga to myśleć o filozofii minimalizacji pikseli w następujący sposób. Czy wolałbyś, żeby angielskie znaki wyglądały
A B C
lubAA BB CC
? Ten drugi wybór marnuje 50% niepustych pikseli.źródło
Używam podwójnych cudzysłowów, ponieważ robię to od lat w większości języków (C ++, Java, VB…) oprócz Bash, ponieważ używam również podwójnych cudzysłowów w normalnym tekście i ponieważ używam (zmodyfikowanej) klawiatury innej niż angielski, gdzie oba znaki wymagają klawisza Shift.
źródło
'
="
/
=\
=\\
przykład:
Wyniki są takie same
= >> nie, nie są takie same. Pojedynczy ukośnik odwróci znaki. Po prostu stało się szczęście w tym przykładzie, bo
\k
i\w
nie jest ważne, jak ucieka\t
lub\n
lub\\
lub\"
Jeśli chcesz używać pojedynczych ukośników odwrotnych (i należy je interpretować jako takie), musisz użyć łańcucha „raw”. Możesz to zrobić, umieszczając znak „
r
” przed ciągiemJeśli chodzi o ścieżki w systemie Windows, ukośniki są interpretowane w ten sam sposób. Oczywiście sam łańcuch jest inny. Nie gwarantowałbym jednak, że są obsługiwane w ten sposób na urządzeniu zewnętrznym.
źródło
os.path.join()