Tekli tırnaklar vs çiftli tırnaklar [kapalı]


79

Java arkaplanından geldikten sonra Python yazdığım bir işe başladım ve diğer geliştiricilerin ''çift ​​tırnak ( "") yerine tek tırnak ( ) kullanarak dizeler alıntı yapma eğiliminde olduklarını fark ediyorum . Örneğin:

line1 = 'This is how strings typically look.'
line2 = "Not like this."

Bunun kişisel tercihlerden başka özel bir nedeni var mı? Dizeleri alıntılamak için uygun yol bu mu? Özellikle, bilmek istediğim, bu kodlama tarzını yönlendiren bir tür standart veya kabul edilmiş en iyi uygulama olup olmadığıdır.


5
Hiç içine alırsanız Ruby, aslında orada olduğunu tek ve çift tırnak arasındaki teknik farkı. Çift tırnak, dize enterpolasyonunu destekler - tek tırnaklar değişmez olarak ayrıştırılır.
KChaloux

5
Aynısı Perl ve çoğu mermi için de geçerlidir.
Blrfl

18
.? Nasıl mutlak piton acemi olarak, size bash senaryo yazmaya ise büyük bir fark vardır, bu bilmemiz gerekir 'bu soruyu "yapıcı değildir.
Magicsowon

19
Yapıcı değil mi? Tanrım. "Python single double quotes" için ilk google sonucu, hızlı bir şekilde bilmeniz gerekenleri size söyler. Eric sorma ve detly cevaplanması için teşekkürler
aggieNick02

Yanıtlar:


65

Diğer cevaplar, teknik bir fark yaratmadığı için doğrudur, ancak birkaç açık kaynaklı projede resmi olmayan bir kural görmüştüm: Sonunda kullanıcı tarafından görülebilen dizgiler için çift tırnaklar kullanılıyor (gerekse de gerekmiyor olsun) çeviri) ve tek tırnaklar, kodun işlevselliği ile ilgili dizeler içindir (örneğin, dikt tuşları, normal ifadeler, SQL).

Bu kesinlikle evrensel bir kural değildir (veya hatta bir PEP'de kodlanmıştır), bu yüzden kodlamanın diğer keyfi yönleri gibi yerel kurallara da iner.

PEP 8'in (bu cevabı yazarken farketmediğim) dediğini unutmayın :

Bu KEP bunun için bir öneride bulunmaz. Bir kural seç ve ona bağlı kal. Bir dize tek veya çift tırnak karakterleri içerdiğinde, dize ters eğik çizgileri önlemek için diğerini kullanın. Okunabilirliği arttırır.

Bir yorumcunun belirttiği gibi, bu "kuralı" nasıl yorumladığınıza bağlı olarak mutlaka zorunlu değildir. Ne önerirsem gerçekten teklifin ikinci yarısında işe yaramaz.


1
Bu, ev stili olabilir, ancak PEP 8'e aykırıdır: içeriğinden bağımsız olarak bir tanesini seçip tüm dosya için kullanın.
Nils von Barth

4
@NilsvonBarth PEP, "bir sınırlayıcı karakter seçip onunla sopa" değil, "bir kural seç ve ona bağlı kal" diyor. "Kullanıcı tarafından görülebilen metin için çift tırnak, makinenin kullandığı şeyler için tek tırnak işareti" kesinlikle mükemmel bir kural gibi gözüküyor.
Tanner Swett,

1
@Tanner Swett Üzgünüz, haklısınız; o “Bir dosya içinde” belirten Google Python stil kılavuzu var google.github.io/styleguide/pyguide.html#310-strings
Nils von Barth

Siyah aslında Python dizelerini çift tırnak işareti içine alacak şekilde biçimlendirir. Jslint bile JavaSciprt dizelerinin çift tırnak işareti ile çevrelenmesini istiyor. Daha eski dillerin çoğu hiçbir zaman seçenekler sunmadı. Sadece yapabildiğin için yapman gerektiği anlamına gelmez. Elbette, bunun olması gereken çok güzel bir şey olduğu birkaç örnek var. Bununla birlikte, pratik olarak konuşursak, dizelerinizin çoğu, kod tabanınızda kodlanmamış bir veri kümesinden gelmelidir.
Bobort

1
@bobort Bir çeviri veya kullanıcı arabirimi sisteminde dize baksanız bile, genellikle kodunuzdakiler için dize tuşlarına ihtiyacınız vardır. Ancak bazı şeylerin yoluna girdiğine katılıyorum ve bu ayrımın gerçekten bir yararı yok.
Nisan’da

21

O çok basit:

  • Tek tırnak, çift tırnaktan kayan gömme işlemine izin verir.
  • Çift tırnak, çıkmamış tek tırnakların gömülmesine izin verir.

'Çift tırnak kullanana kadar kullanmak ( Pythonic ).

Aşağıdaki alıntı doğrudan String hazırlıkları belgesindeki belgelerdendir.

Unicode dizelerinde bulunur. Python 2'de 'b' veya 'B' öneki yoksayılır; değişmezin Python 3'te değişmez bir bayt olması gerektiğini gösterir (örneğin, kod otomatik olarak 2 ile 3 arasında dönüştürüldüğünde). Bir 'u' veya 'b' ön ekini bir 'r' ön eki izleyebilir.

Üçlü-tırnaklı dizgilerde, art arda gelen yeni satırlara ve tırnaklara izin verilir (ve bunlar korunur), ancak arka arkaya çektiğiniz üç tırnak işareti dizgiyi sonlandırır. (Bir "alıntı", dizeyi açmak için kullanılan karakterdir, yani 'veya ".)


15
Tabii ki soru - neden neredeyse her dil çift tırnak kullandığında, tek tırnakları tercih etmek Pythonic?
Martin Beckett

13
@MartinBeckett çünkü

3
Ahh elbette ;-)
Martin Beckett

6
@JarrodRoberson: Bence "çünkü" (ya da 'çünkü', eğer istersen), eğer bazı PEP (ya da benzerleri) Pythonic şekilde yazılmışsa geçerli bir cevaptır . Aksi takdirde, sadece kişisel bir seçimdir.
Joachim Sauer

5
tek tırnak daha temiz görünüyor ve ayrıca yazmak için bir kaydırma tuşuna gerek yok
JoelFan

17

Teknik açıdan bakıldığında, farketmez, tarz açısından birkaç düşünce:

  • Diğer programlama dillerinin çoğu çift tırnak kullanır.
  • İngilizce yazarken genellikle çift tırnak kullanılır.
  • Tek tırnak, uygulamanızda çok sayıda teknik olmayan / anlatı metni bulunduğunuzda kullanışlıdır, çünkü bunlar çift tırnakları daha doğal bir şekilde kullanmanızı sağlar. bar = '"It\'s awesome" he said.'
  • Diğer taraftan, tek tırnaklı karakter ingilizce dilinde de birkaç kez kullanılır. bar = "\"It's awesome\" he said."

"Genellikle teknik dizgilerde kullanılır, ee, sunuyorsunuz" {dumb_thing} ama bu bizim için bile çok aptalca! "
Christian Sauer

4

Python'da tekli tırnak işareti ve çiftli tırnak işareti arasında bir fark yoktur. Pratik açıdan, birlikte çalıştığınız verinin türüne bağlı olarak, bir veya diğer stili daha uygun bulabilirsiniz.

"Varsayılan olarak" kullanılan (biri veya diğerini kullanmak için zorlayıcı bir neden olmadığı) alıntı türleri kişisel tercih meselesidir.

Daha fazla bilgi için, Python belgelerinde String Literals bölümüne bakın .


4

Tek veya çift tırnak düzenli olarak kullanılıp kullanılmayacağına dair alışkanlığınızı geliştirirken dikkat etmeniz gereken bazı şeyler.

Çift tırnak, iki parmakla anahtarlama gerektirir; ve bu nedenle, hız azalmasının yanı sıra yazma hataları için daha muhtemel

Editörünüz bir karakteri diğerinden daha iyi gösterebilir; Daha kolay görsel sözdizimi hata ayıklaması için.

Dokümanlar üçlü karakterler kullanır: Hangisi daha iyi görünüyor? "" "" "" "veya" "" "

Bunu Windows işletim sisteminde görmemiş olmama rağmen, bazı sözdizimi veya dokümantasyon araçları çift ayetli tekli tırnaklar bekleyebilir.

Gördüğüm Python derslerinin çoğu için deneyiminin tam tersini görüyorum. Genellikle kullanılan çift tırnak görüyorum.


4

Bence bir dize için çift ​​tırnak kullanmayı tercih ederim .

Neden? Diğer dil programcıları için hızlı bir şekilde uyarlanabilir ve kodu daha kolay anlayabilirsiniz.

Bir C programcısı aşağıdakileri görürse:

'Writing "It\'s big?" No.'

Yerine tereddüt edecek:

"Writing \"It's big?\" No."

3
"Yazmak \" Büyük mü? \ "Hayır."
API-Beast

@ Lucio Yaptığım şey buydu, sadece bir çeşit yerleşik Python standardını ihlal edip etmediğimi bilmiyordum.
Eric Hydrick

@EricHydrick Hayır, birini veya diğerini seçebilirsiniz.
Lucio
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.