Kutipan tunggal vs tanda kutip ganda [ditutup]

79

Saya baru saja memulai pekerjaan di mana saya menulis Python setelah datang dari latar belakang Java, dan saya memperhatikan bahwa pengembang lain cenderung mengutip string menggunakan tanda kutip tunggal ( '') daripada tanda kutip ganda ( ""). Sebagai contoh:

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

Apakah ada alasan khusus untuk ini selain preferensi pribadi? Apakah ini cara yang tepat untuk mengutip string? Secara khusus, yang ingin saya ketahui adalah apakah ada beberapa jenis praktik standar atau yang diterima terbaik yang mendorong gaya pengkodean ini.

Eric Hydrick
sumber
5
Jika Anda pernah masuk ke dalam Ruby, ada sebenarnya adalah perbedaan teknis antara tanda kutip tunggal dan ganda. Kutipan ganda mendukung interpolasi string - tanda kutip tunggal diuraikan sebagai literal.
KChaloux
5
Hal yang sama berlaku untuk Perl dan kebanyakan shell.
Blrfl
18
Bagaimana pertanyaan ini "tidak konstruktif '? Sebagai pemula python absolut, saya perlu tahu ini. Jika Anda menulis skrip bash, ada perbedaan besar.
Magicsowon
19
Tidak konstruktif? Ya ampun. Hasil google pertama untuk "tanda kutip ganda python", memberi tahu Anda apa yang perlu Anda ketahui dengan cepat. Terima kasih telah bertanya pada Eric dan menjawab detly
aggieNick02

Jawaban:

65

Jawaban lainnya benar karena tidak ada perbedaan teknis, tetapi saya telah melihat satu aturan gaya informal pada beberapa proyek open-source: tanda kutip ganda digunakan untuk string yang pada akhirnya dapat terlihat oleh pengguna (apakah mereka perlu atau tidak terjemahan), dan tanda kutip tunggal untuk string yang berkaitan dengan fungsionalitas kode itu sendiri (mis. kunci dict, ekspresi reguler, SQL).

Ini tentu saja bukan aturan universal (atau bahkan dikodifikasi dalam PEP), jadi seperti aspek sewenang-wenang lainnya dari pengkodean, semua itu tergantung pada aturan lokal.

Perhatikan bahwa PEP 8 (yang tidak saya perhatikan ketika saya menulis jawaban ini) mengatakan :

PEP ini tidak membuat rekomendasi untuk ini. Pilih aturan dan patuhi itu. Ketika sebuah string berisi karakter kutipan tunggal atau ganda, gunakan yang lain untuk menghindari garis miring terbalik di string. Ini meningkatkan keterbacaan.

Sebagai komentator tunjukkan, ini tidak selalu kontradiktif, tergantung pada bagaimana Anda menafsirkan "aturan". Apa yang saya sarankan tidak benar-benar bekerja dengan paruh kedua kutipan.

detly
sumber
1
Ini mungkin gaya rumahan, tetapi bertentangan dengan PEP 8: pilih satu dan gunakan untuk seluruh file, apa pun kontennya.
Nils von Barth
4
@NilsvonBarth PEP mengatakan "pilih aturan dan patuhi itu", bukan "pilih satu karakter pembatas dan patuhi itu". "Kutipan ganda untuk teks yang dapat dilihat pengguna, tanda kutip tunggal untuk hal-hal yang digunakan oleh mesin" sepertinya aturan yang sangat baik untuk dipatuhi.
Tanner Swett
1
@ Tanner Swett Maaf, Anda benar; itu adalah panduan gaya Google Python yang menentukan "di dalam file" google.github.io/styleguide/pyguide.html#310-strings
Nils von Barth
Hitam sebenarnya memformat string Python untuk dikelilingi oleh tanda kutip ganda. Bahkan jslint ingin string JavaSciprt dikelilingi oleh tanda kutip ganda. Sebagian besar bahasa yang lebih tua bahkan tidak pernah memberikan opsi. Hanya karena Anda dapat melakukannya bukan berarti Anda harus melakukannya. Tentu saja, ada beberapa contoh di mana ini adalah hal yang sangat bagus untuk dimiliki, seperti ketika Anda memiliki kutipan dalam string. Secara praktis, sebagian besar string Anda harus berasal dari kumpulan data yang tidak dikodekan secara keras dalam basis kode Anda.
Bobort
1
@obobort Bahkan jika Anda mencari string dalam terjemahan atau sistem UI, Anda sering masih memerlukan kunci string untuk orang-orang dalam kode Anda. Tetapi saya setuju bahwa banyak hal telah berubah, dan sebenarnya tidak ada manfaat untuk perbedaan ini.
detly
21

Ini sangat sederhana:

  • Kutipan tunggal memungkinkan penyisipan tanda kutip ganda tanpa hambatan.
  • Kutipan ganda memungkinkan untuk menempelkan tanda kutip tunggal yang tidak terhindar.

Ini paling Pythonic untuk digunakan '(tanda kutip tunggal) sampai Anda membutuhkan tanda kutip ganda.

Kutipan berikut langsung dari dokumentasi pada String literals.

tersedia dalam string Unicode. Awalan 'b' atau 'B' diabaikan dalam Python 2; itu menunjukkan bahwa literal harus menjadi byte byte dalam Python 3 (misalnya ketika kode secara otomatis dikonversi dengan 2to3). Awalan 'u' atau 'b' dapat diikuti oleh awalan 'r'.

Dalam string yang dikutip tiga kali lipat, baris baru dan tanda kutip tidak dibolehkan diizinkan (dan dipertahankan), kecuali bahwa tiga tanda kutip tanpa tanda kutip dalam satu baris mengakhiri string. ("Kutipan" adalah karakter yang digunakan untuk membuka string, yaitu 'atau ".)


sumber
15
Pertanyaannya tentu saja - mengapa Pythonic lebih memilih tanda kutip tunggal ketika hampir setiap bahasa lain menggunakan tanda kutip ganda?
Martin Beckett
13
@MartinBeckett karena
3
Ahh tentu saja ;-)
Martin Beckett
6
@JarrodRoberson: Saya pikir "karena" (atau 'karena', jika Anda mau) adalah jawaban yang valid jika itu ditulis dalam beberapa PEP (atau serupa) bahwa itu adalah cara Pythonic . Kalau tidak, itu hanya pilihan pribadi.
Joachim Sauer
5
Kutipan tunggal terlihat lebih bersih dan juga tidak perlu tombol shift untuk mengetik
JoelFan
17

Dari perspektif teknis tidak ada bedanya, dari perspektif gaya beberapa pemikiran:

  • Sebagian besar bahasa pemrograman lain menggunakan tanda kutip ganda.
  • Saat menulis dalam bahasa Inggris biasanya kutipan ganda digunakan.
  • Kutipan tunggal berguna ketika Anda memiliki banyak teks non-teknis / narasi dalam aplikasi Anda karena mereka memungkinkan Anda untuk menggunakan tanda kutip ganda dengan cara yang lebih alami. bar = '"It\'s awesome" he said.'
  • Di sisi lain, karakter kutipan tunggal juga digunakan dalam beberapa kesempatan dalam bahasa Inggris. bar = "\"It's awesome\" he said."
API-Beast
sumber
Perhatikan bahwa "sering digunakan dalam string teknis, juga -e, g f'you dikirimkan" {dumb_thing} tetapi itu terlalu bodoh bahkan untuk kita! '
Christian Sauer
4

Tidak ada perbedaan antara menggunakan tanda kutip tunggal dan tanda kutip ganda dalam Python. Dalam istilah praktis, tergantung pada jenis data yang Anda kerjakan, Anda mungkin menemukan satu atau gaya lainnya lebih nyaman.

Jenis kutipan yang digunakan "secara default" (di mana tidak ada alasan kuat untuk menggunakan salah satu atau yang lain) adalah masalah preferensi pribadi.

Untuk informasi lebih lanjut, lihat bagian String String di dokumentasi Python.

Greg Hewgill
sumber
4

Beberapa hal yang perlu dipertimbangkan ketika mengembangkan kebiasaan Anda apakah menggunakan tanda kutip tunggal atau ganda secara teratur.

Kutipan ganda membutuhkan penguncian dua jari; dan karena itu lebih mungkin untuk kesalahan pengetikan serta penurunan kecepatan

Editor Anda dapat menunjukkan satu karakter lebih baik daripada yang lain; untuk debugging sintaksis visual yang lebih mudah.

Dokumen menggunakan tiga karakter: Mana yang terlihat lebih baik? """""" atau ''''''

Meskipun saya belum melihat ini pada OS Windows, beberapa sintaks atau alat dokumentasi mungkin mengharapkan tanda kutip tunggal ayat ganda.

Untuk sebagian besar tutorial Python yang saya lihat saya melihat kebalikan dari pengalaman Anda. Saya biasanya melihat tanda kutip ganda digunakan.

DevPlayer
sumber
4

Menurut pendapat saya, saya lebih suka menggunakan tanda kutip ganda untuk string.

Mengapa? Untuk programmer bahasa lain dapat beradaptasi dengan cepat dan memahami kode lebih mudah.

Jika seorang programmer C melihat:

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

Akan ragu-ragu, bukannya:

"Writing \"It's big?\" No."
Lucio
sumber
3
"Menulis \" Besar? \ "Tidak."
API-Beast
@ Lucio Itulah yang telah saya lakukan, saya hanya tidak tahu apakah saya melanggar semacam standar Python yang sudah mapan atau tidak.
Eric Hydrick
@ EricHydrick Tidak, Anda dapat memilih satu atau lainnya.
Lucio